博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
virtual继承
阅读量:5902 次
发布时间:2019-06-19

本文共 644 字,大约阅读时间需要 2 分钟。

hot3.png

一般用于多继承中,

比如,存在基类B:

class B{

public :
    int a;
    
public:
    B()
    {
        CCLOG("construc b------------");
    }
};

派生类D1和D2:

class D1:public B{

public :
    D1()
    {
        CCLOG("construc d1------------");
    }
};

class D2:public B{

public :
    D2()
    {
        CCLOG("construc d2------------");
    }
};

class C:public D1,public D2

{
public :
    C()
    {
        CCLOG("construc c------------");
    }

};

那么C拥有2个a,分别来自D1和D2。

C c;

c.a;//报错

c.D1::a;//ok

int _size = sizeof(C);//_size == 8

构造顺序为 b->d1->b->d2->c

 

但如果 D1,D2使用virtual继承

class D1:virtual public B{};

class D2:virtual public B{};

那么C只会有一个a

c.a;//ok

int _size = sizeof(C);//_size == 12

构造顺序为 b->d1->d2->c

转载于:https://my.oschina.net/yizhangxyz/blog/672709

你可能感兴趣的文章
BAE Flask UEditor 使用七牛云
查看>>
Bootstrap系列 -- 15. 下拉选择框select
查看>>
【转载】无限级分类的简单实例
查看>>
关于WinPE安装操作系统
查看>>
LeetCode Median of Two Sorted Arrays
查看>>
(算法)两个人是否为队友
查看>>
oschina程序开发
查看>>
mysql创建每月执行一次的event
查看>>
kafka集群部署
查看>>
STM8串口初始化寄存器配置
查看>>
ReactNative常用组件汇总
查看>>
openfaas 安装(docker swarm 模式)
查看>>
nested exception is java.lang.NoClassDefFoundError: net/sf/cglib/proxy/CallbackFilter
查看>>
“正在注册字体”问题解决
查看>>
[转]OPEN(SAP) UI5 学习入门系列之一:扫盲与热身(上)
查看>>
CSS/CSS3中的原生变量var详解以及布局响应式网页扩展
查看>>
windows10 更新后要输入2次密码才能进入系统
查看>>
iOS开发-OpenGL ES入门教程1
查看>>
平衡二叉树(AVL树)
查看>>
Solidworks如何打开swb文件
查看>>