C++ &继承(单继承.多继承.菱形(虚拟)继承)
来源:互联网 发布:淘宝女舞蹈裤 编辑:程序博客网 时间:2024/06/06 13:05
单继承:(一个子类只有一直接个父类)
多继承:(一个子类有两个或者两个以上的直接父类)
菱形继承:
#include <iostream>using namespace std;class A{public:int _a;};class B : public A{protected:int _b;};class C : public A{protected:int _c;};class D : public B, public C{protected:int _d;};void test(){cout<<sizeof(D)<<endl;}int main(){test();return 0;}
输出结果为:20
- [菱形继承的对象模型]
D的对象中有两个A成员
(菱形继承存在二义性和数据冗余性的问题)
虚继承:在继承关系前加上关键字virtual
虚继承:在继承关系前加上关键字virtual
(解决菱形继承的二义性和数据冗余的问题)
- 虚继承解决了在菱形继承体系里面子类对象包含多份父类对象的数据冗余&浪费空间问题。(比如 D的对象中有两个A成员)
- 虚继承看起来很复杂,在实际应用中通常我们不会去用它。因为它在解决数据冗余的同时又带来了性能上的消耗。
class A{public:int _a;};class B :virtual public A{protected:int _b;};class C :virtual public A{protected:int _c;};class D : public B, public C{protected:int _d;};void test(){cout<<sizeof(D)<<endl;}
输出结果为:24
- [菱形虚拟继承的对象模型]
阅读全文
0 0
- 继承(单继承、多继承、菱形继承、虚继承)
- C++ &继承(单继承.多继承.菱形(虚拟)继承)
- 【C++】继承(菱形继承)
- 菱形继承->菱形虚拟继承(继承系列问题)
- C++中的类继承(4)继承种类之单继承&多继承&菱形继承
- c++继承(单继承,多继承,菱形继承和虚继承)详解
- 继承、多继承、菱形虚拟继承
- 继承(二)--菱形继承,虚拟虚拟继承
- 【C++】菱形虚拟继承(内存布局)
- C++中的多态、单继承、多继承、菱形继承、菱形虚拟继承
- 【C++】c++单继承、多继承、菱形继承内存布局(虚函数表结构)
- 【C++】c++单继承、多继承、菱形继承内存布局(虚函数表结构)
- 继承:单继承、派生类成员的访问属性、多继承、菱形继承、虚继承,菱形虚拟继承
- 菱形继承&菱形虚拟继承
- 菱形继承&菱形虚拟继承
- 菱形继承--菱形虚拟继承
- 继承*菱形继承与菱形虚拟继承
- c++之各种继承(单继承,多继承,菱形继承)
- 设计模式----工厂模式
- 使用互斥锁和条件变量实现实现读写锁
- Android通过代码模拟物理、屏幕点击事件
- JavaScript6里出现了哪些新语法、新特征
- 开发状态下百度的ak的获得
- C++ &继承(单继承.多继承.菱形(虚拟)继承)
- python基础-内置函数2
- 流媒体SMIL相关
- RedHat离线安装htop源码包
- JS内置对象Array,Boolean,String,Number
- pioneer3-at dx lx urdf gazebo
- 【AI_数学知识】线性代数
- Android 内存分析
- python image