C++中的虚基类
来源:互联网 发布:测试常用的linux命令 编辑:程序博客网 时间:2024/04/30 21:12
我们知道类具有三大特性:封装、继承和多态。继承,可以在现有类的功能上进一步扩展,而无需在构建新的类。但有时多重继承会使结构变得复杂,不注意的话还会引起二义性。其中比较典型的一个案例:
class A{ public: int a; };class B: public A{};class C: public A{};class D: public B, public C{};那么此时如果我们声明一个D类的对象:
int main(){ D d; d.a = 0; //错误,无法区分是从B还是C继承来的a d.B::a = 0; //正确 d.C::a = 0; //正确}因此,很容易出现混淆和错误。然而如果我们设定类A为虚基类,则就不用再去区分是从哪条路径继承来的a值了。即:
class A{ public: int a; };class B: virtual public A // A是B的虚基类{};class C: virtual public A // A是C的虚基类{};class D: public B, public C{};此时就可以直接调用 d.a= 0;了。
C++提供虚基类的方法,使得在继承间接共同基类是只保留一份成员。(C++程序设计)
0 0
- C中的#
- c 中的 # #@ ##
- C中的#
- c中的“:”
- 【C++】C++中的C
- C/C 中的static关键字
- [C学习]C中的变量
- [C学习]C中的变量(?)
- c++,C#,java中的类
- C 项目中的extern "C" {}
- C++/C 使用中的语法错误
- Objective-c中的C特性
- C++/C中的预处理命令;
- C / C ++中的数组讲解
- [c/c++]C中的三元运算
- c中的数据类型
- C#中的委托
- C中的预处理命令
- Theme Section(KMP应用 HDU4763)
- 嵌入式linux程序之调试方法
- 常用数据类型对应字节数
- HDU 1113 Word Amalgamation -- 字符串处理+排序
- 剑指offer:顺时针打印矩阵
- C++中的虚基类
- 软肋
- 正则表达式
- iPhone第四节:UIDatePicker、UIPickerView
- n个骰子的点数
- ok
- Service绑定服务
- UIWindow ,UIView
- VMware Ubuntu下找不到共享文件的解决方法