问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c++,继承类的构造函数

发布网友 发布时间:2022-06-02 14:10

我来回答

5个回答

热心网友 时间:2023-11-01 02:46

B没有print子函数,那么就调用A的print函数。
注意一点,A的print函数输出的是A的成员变量a
构造函数只是初始化了成员变量而已,但是你调用A的print,人家输出的就是A的成员变量a
而不是B的成员变量a。
B虽然继承了A,但是调用了A的成员函数,那么print中的变量依然是A的,而不是B的。
如果想实现你想的那种结果,那么你就要修改B的定义。
class B:public A
{
public:
int a;
B()
{
a=2;
}
};
你这么定义,实际的编译结果跟你想的是不一样的:
class B:public A
{
public:
int a;
int A.a;
B()
{
a=2;
}
A()
{
A.a = 1;
}
A.print()
{
printf("%d",A.a);

}
};
上述的代码才是编译后的形式。这你应该懂了吧。
望采纳。

若你想得到你想象中的那种结果,那么你可以如此修改B
class B:public A
{
public:
/*int a;*/ //此行注释掉就可以了。
B()
{
a=2;
}
};

热心网友 时间:2023-11-01 02:47

类B通过公有继承继承A,类B包含的数据成员有两个,a和A::a,调用B的默认构造函数初始化B,其实是先调用A()初始化A::a = 1;再初始化a = 2,相互并行存在,互不干扰。由于B类并没有重新定义print()函数,所以b.print()调用的其实是类a中的定义,它输出的是A::a,所以就是1啦。

热心网友 时间:2023-11-01 02:47

B 没有定义 print

所以
b.print();调用的是b.A::print();
由于print()不是虚函数所以 实际上这个函数输出的是父类的成员 b.A::a=1;
输出1;
由于B类定义了和父类同名的变量a ,相对更有全局性质的A类的同名变量,被遮蔽了(不是覆盖,两个变量同时存在)。
不过b.a 是 b.B::a;所以 printf("%d ",b.a);输出2;
A::a 只能通过作用域限定符访问即,b.A::a;
所以输出12
PS:
你可以同时访问A::a 和B::a;
例如

printf("A::a=%d,B::a=%d ",b.A::a,b.a);
可以这样查看一具体的地址
printf("&A::a=%p,&B::b=%p,&b.a=%p\n",&b.A::a,&b.B::a,&b.a);
结果如下:
&A::a=0022FE48,&B::b=0022FE4C,&b.a=0022FE4C
b.B::a,b.a 的地址相同,所以b.a,就是b.B::a;子类B定义的那个变量。

热心网友 时间:2023-11-01 02:48

跟据继承性和多态性原理,子类有的调用子类的。子类没有的。就调用父类的。b.print();由于子类没有这个函数。所以就调用父类的print(),所以打印出来的a的值是父类a的值。即为:1

热心网友 时间:2023-11-01 02:48

这个。。。构造函数理解对了

b.printf(); 输出的是A::a 不是 B::a
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
焦作有哪些旅行景点值得一去? 河南穿古装去的地方 AE入门从学会套模板开始,AE模板套用简易教程,看起来复杂的AE其实也很... ae怎么套用模板ae模版的使用方法 北京通州区有什么好玩的地方吗 请问现在有哪些看电影的网站?越多越好~~ 帮初中女儿请假一天讲身体不适,班主任却跟别的老师讲她得了大病,该如何... 梦见家中被盗空只剩一件绿色衣的预兆 梦见美丽沙穗 美版4s内置卡贴有什么危害? 设函数 .(1)求函数 的单调递增区间;(2)若关于 的方程 在区间 内恰有两个相异的实根,求实数 java中有构造函数的说法吗?如果不是,怎样给私有数据赋值?直接赋值吗?such as:private:int a=1; 需要把所有的变量都放在构造函数中初始化吗 构造函数的特点 c#:构造函数的作用, 怎样用手机自行刷机 手机怎么自己刷机 白眼球上有黑点 眼睛白眼球处有一颗黑点,是什么原因。求解答,谢谢! 白眼球上为什么有黑块,有什么办法去掉吗 眼睛下翻时白眼球上有黑色的点和片是怎么回 欧姆龙plc编程指令不能输入快捷字母? 企业要踏进顶峰,这点必不可少! 玻璃珠前景 制作滴管、带珠玻棒、玻璃匙的要领是什么? 某框架结构建筑,建筑面积3800m2,四类工程。 土建主体交工验收施工单位需要哪些资料? 谁能告诉我漂珠是怎么从电厂的灰里提炼的? 玻璃微珠具有什么样的性能? 每个子分部工程都要出自评报告么 有关java构造函数,变量初始化的小问题 1986年05月30日,今年的运势如何? 86年6月30出生的虎今年运气如何? 86属虎今年运气怎么样 斯里兰卡的行政区划 86年10月16生的今年运势如何? 范冰冰自曝在挑艺术片和话剧剧本,将重回影视圈,观众是否会接受? 纳米银线可涂布在什么基材上?对PET基材有什么要求,对玻璃基底有什么要求? 请教专家银纳米线的PET成膜 纳米银线要用无水乙醇保存吗 50d泰山拍日出加什么滤镜,为什么对焦很慢,快门按不动 动能是物体由于什么而具有的能物体的越大运动的越大动能就越大 物体动能改变的原因 网站推广有没有简便的方式? 求《她的微笑又出现》英文歌词 急求《她的微笑又出现》这首歌的下载地址 马油只是淡化痘印,不能去除吗? 她的微笑,用有时,排比句. 作文《他的微笑》 蒙娜丽莎的微笑有什么含义