为什么A *a=new B不直接写成B b,或者B *p呢?B是A的子类有人说扩展类是不可预知的,为什么不可预知呢?这里new B不是已经出现了B吗

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/17 20:36:02

为什么A *a=new B不直接写成B b,或者B *p呢?B是A的子类有人说扩展类是不可预知的,为什么不可预知呢?这里new B不是已经出现了B吗
为什么A *a=new B不直接写成B b,或者B *p呢?
B是A的子类
有人说扩展类是不可预知的,为什么不可预知呢?这里new B不是已经出现了B吗

为什么A *a=new B不直接写成B b,或者B *p呢?B是A的子类有人说扩展类是不可预知的,为什么不可预知呢?这里new B不是已经出现了B吗
楼主很明显涉足C++不深啊!
给楼主举个例子来说明一下,A 代指鸟类,B是A的子类,B用鸡来表示,C也是A的子类,C用鸭来表示,所以A *a=new B是正确的.A *a=new C也是正确的对吧!假设你拿着钱去上街买肉,钱多买鸡,钱少买鸭,反正最后得买东西,买用buy()方法来表示,那么buy()方法要么返回鸡,要么返回鸭,所以A *a=buy()是正确的,但是如果写成B *b=buy()的话就有可能出错,因为还有可能买鸭回来.所以说扩展类是不可预知滴!A *a=new B只是一种教科书里面通用的方法,旨在让你逐渐地习惯这种编程思想,写成B *b=new B 也是完全正确的,因为确实像你说的那样这里B已经给出来了,但是随着编程的深入,使用new运算符的机会会变得越来越少……将不可预知的变量赋值给通用的类型是最妥当的方法,这种方法俗称:向上类型转换

为什么A *a=new B不直接写成B b,或者B *p呢?B是A的子类有人说扩展类是不可预知的,为什么不可预知呢?这里new B不是已经出现了B吗 A consist of B.A是由B组成,为什么不写成A is consisted of 假设A是类B的父类,声明中:A x =new B();有什么意义嘛?为什么B x=new A();就不对了 My glasses were broken .So I want to buy_B_____ A.new ones B.a new pair 为什么不选A (a+b)•c可以省掉•直接写成(a+b)c吗 宏定义的时候为什么要加那么多括号比如 A*B 为什么要写成 ((A)*(B))我想直接加一个外面的括号 写成 (A*B)不就行了? 概率里 A-B=A-AB 为什么 概率减法公式直接可以写成P(A-B)=P(A)-P(AB)?P(A-B)不是应该=P(A-AB)吗?这个括号可以随便拆开变成P(A)-P(AB)吗?为什么P(A-AB)可以直接拆成P(A)-P(AB) 是不是所有的P(两个东西相加) java中new的两边啥意思.A a=new A();A a=new B();能不能用通俗的话说下.. 【英语】My new coat can keep ( ) the rain. A. off B. out 应选A.为什么不选B? 下列代码中为什么要写成 a=Val(Text1.Text),而不是直接写成 a=Text1.Text a乘b加b可以写成( ) C# class A {} class B:A {} class C:B Main() { A a = new A; B b = new C; A c =b; }A c Peter’s father is______the money to buy a new car.A.counting on B.counting为什么选A,不选B,两者有何区别? 关于一些电离方程式的书写A.NaHCO3==Na+ +HCO3- 为什么不写成 NaHCO3==Na+ +H+ +CO3 2-B.NaHSO4==Na+ +H+ +SO4 2- 为什么不写成 NaHSO4=Na+ + HSO4-C..HClO =(可逆)= H+ +ClO- 为什么不写成 HClO =(可逆)= H+ +Cl+ +O2- a和b交换的算法疑问?为什么要交换a和b的值要使用中间变量temp,temp=a; a=b; b=temp; 而不直接使用 a=b; b=a; 从内存分配角度讲,为什么不能这样?在第一种中,已经被赋值的a难道只有赋值给其 Her new shoes were made __ leatherAby B of Cin D from为什么不选A啊 若向量OA=向量a,向量OB=向量b,则角AOB平分线上的向量OM为多少答案是λ(a|a|+b|b|)(λ由 OM确定) 我不反对,但是为什么不直接写λ(a+b)?a跟|a| b跟|b|除的关系,复制过来变成乘了 (a+b)c=直接写答案