设为首页 加入收藏

TOP

C++继承的理解与四种默认构造函数探索(二)
2017-07-25 10:23:49 】 浏览:688
Tags:继承 理解 默认 构造 函数 探索
承中,这里B就是C1和C2的虚基类,而C1和C2就是带有虚基类的类 class B { public: int _b; }; class C1:virtual public B { public: int _c1; }; class C2:virtual public B { public: int _c2; }; class D:public C1, public C2 { public: int _d; }; void FunTest(C1* ptr) //重点观察我们的这个函数 { ptr->_b = 10; } int main() { D* d = new D(); C1* c = new C1(); FunTest(d); FunTest(c); return 0; } \
我们可以看到FunTest函数形参是C1类型的指针,但是实参是不同的,但是我们运行之后发行,可以编译通过,说明这里和形参的类型无关,因为这里是一个带有虚基类的类,因此编译器认为是被需要的,因此会自动合成一个默认构造函数,并且有一个虚拟指针指向一张虚函数表,指向B类的构造函数,最后两个实参都指向了同一个地址,就可以找到_b 在编译器是否会自己合成默认构造函数这个问题上,并不是我所想的那么简单,如果发现错误,希望被指正!
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++批量对图片进行水平镜像、切片.. 下一篇C++之成对使用的new和delete时采..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目