第十二周阅读程序4:虚基类-同名数据成员
来源:互联网 发布:慧通网络直播聊天室 编辑:程序博客网 时间:2024/05/16 13:46
问题及代码:
(1)程序执行后,运行结果是多少?
(2)将程序中有注释的两条语句修改为注释的内容,即将“class B:public A {};”修改为“class B:virtual public A{};”,“class C:public A {}; ”修改为“class C:virtual public A{};”,重新编译运行程序,程序的运行结果又是多少?
#include<iostream>using namespace std;class A{public: int n;};class B:public A {}; // class B:virtual public A{};class C:public A {}; // class C:virtual public A{};class D:public B,public C{public: int getn() { return B::n; }};int main(){ D d; d.B::n=10; d.C::n=20; cout<<d.getn()<<endl; return 0;}
运行结果:
1.修改前
int main(){ D d; d.B::n=10; //D的对象成员 B的数据成员n赋值为10 d.C::n=20; //D的对象成员 C的数据成员n赋值为20 cout<<d.getn()<<endl; //getn函数内,返回的是B的n ,所以理所当然的输出结果是10 return 0;}
运行结果:
2.修改后
因为 B和C都变成了虚拟基类 所以在D中的n实际上只是一个数据成员
所以第一次赋值为10,第二次赋值为20,实际是把第一次的赋值给修改掉了,所以最后输出结果为20,
知识点总结:
虚拟基类B,C中同名数据成员和成员函数,实际上都是最初始基类A的数据成员或成员函数
所以在派生类D中调用时相当于直接调用了基类A的数据成员或成员函数
0 0
- 第十二周阅读程序4:虚基类-同名数据成员
- 第十二周阅读程序4
- 第十二周阅读程序4
- 第十二周 阅读程序
- 第十二周 阅读程序
- 第十二周 阅读程序 虚基类 中的继承
- 第十二周项目1-阅读程序4
- 第十二周项目一:阅读程序4
- 第十二周项目-阅读程序4
- 第十二周 项目一 程序阅读 4
- 第十二周 项目一 程序阅读4
- 第十二周 阅读程序(4)
- 第十二周 阅读程序(4)
- 第十二周阅读程序(4)
- 第十二周阅读程序(4)
- 第十二周—阅读程序(4)
- 第十二周—阅读程序(4)
- 第十二周项目-阅读程序
- A. DOM高级 05 表格删除行
- 第五题 P034
- 第十二周 项目一 教师兼干部类
- 好老的文章了,今天把它挖出来了,其实在整个JAVA的学习中偶然性很多,改变你路线的东西也很多,很多东西是跟着工作的变化而变化的,因此关键在于把其中几个学精通,有个主方向,并要懂灵活变化。真个技术生涯还
- Android 性能测试实践(一)
- 第十二周阅读程序4:虚基类-同名数据成员
- stty命令的用法全解
- DevExpress GridControl GridView 导出到 Excel 类
- 天声人語 20150527
- A. DOM高级06 表格搜索01
- 点滴积累 -- dp转px 或 sp转px 之 0.5f的作用
- Android 性能测试实践(二) 实时监控工具
- Linux学习之Linux应用程序地址布局
- android耗时任务_handler