C++虚拟继承深入认识 - linux编程基础 - 编程开发
设为首页 加入收藏

TOP

C++虚拟继承深入认识
2018-03-02 06:57:20 】 浏览:97
Tags:虚拟 继承 深入 认识

假设我们有类 A 、类 B 和类 Test ,类 Test 具有类 A 和类 B 的全部属性,并且它们都具有 temp 属性,现在我们需要在类 Test 中实现对 temp 属性的设定与读取,故写出以下程序:


费了好大力气写出来的程序,保存后编译居然挂了 0.0


这是因为多重继承使基类拷贝了多次,最后子类调用相同属性的话就会产生二义性的问题。


对于上面的程序我们可以这样更改使之编译通过:


程序输出为0。


这样就解决了二义性的问题,但这样的代码显得臃肿,而且相同的属性被拷贝了多次还会浪费内存。


虚拟继承就可以轻松解决上面出现的问题,子类依旧继承基类,但此时不是内存的拷贝,而是指向基类的指针,占用一份指针的内存。


虚拟继承程序如下:


应用虚继承的方式,既解决了二义性的问题,也解决了资源浪费的问题,美滋滋~


虚拟继承虽好,但是不能贪杯,在开发过程中我们应该避免使用多重继承,它会使得程序变得更加复杂,故出错的可能性就更高。


补充虚继承内存占用大小(32位机,from百科):



编程开发网
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C++多重继承的构造执行顺序 下一篇Java实现八大排序算法

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目