c++中多继承同名隐藏的两种继承方式
来源:互联网 发布:编程语言培训机构 编辑:程序博客网 时间:2024/06/05 03:24
虚基类的作用是为了避免派生类从基类中继承过来的同名成员同时产生多个副本。图解:
祖父类->两个父亲类-》一个孩子类
#include<iostream>using namespace std;class base0{public:int var0;void fun0(){cout<<"member of baseo"<<endl;}};class base1:virtual public base0{public:int var1;};class base2:virtual public base0{public :int var2;};class base:public base1,public base2{int var;void fun(){cout<<"member of base"<<endl;}};int main(){base bb;bb.var0=2;bb.fun0();return 0;}
不用虚基类时
#include<iostream>using namespace std;class base0{public:int var0;void fun0(){cout<<"member of baseo"<<endl;}};class base1:public base0{public:int var1;};class base2:public base0{public :int var2;};class base:public base1,public base2{int var;void fun(){cout<<"member of base"<<endl;}};int main(){base bb;bb.base1::var0=2;bb.base1::fun0();bb.base2::var0=3;bb.base2::fun0();return 0;}
多继承同名隐藏举例
如果某派生类的多个基类拥有同名的成员,同时,派生类又新增了这样的同名成员,在这种情况下,派生类的成员将隐藏所有基类的同名成员。
一个父亲-》两个孩子类
#include<iostream>using namespace std;class base1{public:int var;void fun(){cout<<"member of bse1"<<endl;}};class base2{public:int var;void fun(){cout<<"member of base2"<<endl;}};class base:public base1,public base2{public:int var;void fun(){cout<<"member of base3"<<endl;}};int main(){base bb;base *mm=&bb;bb.var=1;bb.fun();bb.base1::var=2;bb.base1::fun();mm->base2::var=3;mm->base2::fun();return 0;}
- c++中多继承同名隐藏的两种继承方式
- 多继承同名隐藏举例
- C++多继承同名隐藏实例
- 继承中同名冲突
- C++中继承关系中的同名隐藏和对策
- 继承中同名成员的处理方法
- Spring中Quartz调度器的使用 ----继承QuartzJobBean,不继承QuartzJobBean两种方式
- 多继承同名覆盖
- js 继承的两种方式
- Style的两种继承方式
- C++继承:同名隐藏、覆盖,虚函数
- C++继承:同名隐藏、覆盖,虚函数
- C++继承:同名隐藏、覆盖,虚函数
- C++继承:同名隐藏、覆盖,虚函数
- 多重继承中函数同名
- 多重继承中函数同名
- Java 中继承之后同名静态变量的问题分析
- 继承中类型转换的两种方式(向上转型、向下转型)
- OpenCV训练分类器
- Linux: checking battery state 启动后停止不动
- service.xml customize database columns type
- Sybase ASE中Uninitialized logical page错误的解决方法
- C++ boost usage
- c++中多继承同名隐藏的两种继承方式
- 四种不同对象的生存方式(栈、堆、全局、局部静态)
- 关于android4.0.4中彩蛋的实现
- sql2000授权和创建角色
- NYOJ - Triangular Sums
- 强制IE缓存CSS中定义的图片
- 防止浏览器缓存css,js静态文件
- 数据库设计范式
- JavaSE第十九讲:多态详解