用virtual避免c++中继承时出现的二义性
2011-10-09 10:51
246 查看
在c++继承时可有多个基类,所以可能出现二义性。可以用virtual来避免
可以试着把virtual去掉看看结果
/* 用virtual来避免继承类的二义性 可以把virtual去掉试试看 */ #include<iostream> using namespace std; class Base { public: int val; }; class BaseClass1:virtual public Base { public: void seta(int x){val=x;} }; class BaseClass2:virtual public Base//如果加上virtual下面的show方法就可以使用,如果没有virtual下面的show方法不能识别 { public: void setb(int x){val=x;} }; class ChildClass:public BaseClass1,public BaseClass2 {public: void show(){cout<<val<<endl;} }; int main() { ChildClass ch; ch.seta(1); ch.setb(2); ch.show(); ch.setb(5); ch.seta(3); ch.show(); return 0; }
可以试着把virtual去掉看看结果
相关文章推荐
- 用virtual避免c++中继承时出现的二义性
- C++多重继承,virtual虚拟继承解决多重继承中的二义性
- C++多重继承与二义性避免
- C++中虚继承防止二义性
- C++当中的virtual继承
- C++之我是二代我继承——员工和工资出现了好几次了……
- C++ (P160—)多继承 二义性 虚基类 “向上转型”
- C++中virtual继承的深入理解
- C++ 绝不重新定义继承而来的非虚(non-virtual)函数
- C++ 中不能被继承的类实现,及从中体现virtual 继承的一个特性
- 有继承的C++析构函数一定要用virtual
- 有继承的C++析构函数一定要用virtual
- C++多继承的二义性
- C++子类继承基类时virtual关键字的作用
- 提高C/C++运行效率以及避免出现Bug的20种方法
- C++中的虚继承,virtual你妹呀!--从MicroSoft的思考!
- C++箴言:避免覆盖通过继承得到的名字
- 读书笔记_Effective_C++_条款三十三:避免遮掩继承而来的名称
- 从多重继承中的二义性 到 虚基类(摘抄自谭浩强c++)
- Effective C++ Item 36 绝不又一次定义继承而来的 non-virtual 函数