我理解的C++虚继承
来源:互联网 发布:ftpflashfxp mac 编辑:程序博客网 时间:2024/05/20 05:11
1.虚继承的构造函数和析构函数的调用顺序
在多重继承的时候, 构造顺序是 虚继承按顺序优先, 再次是其他按顺序, 由基类至派生类; 析构顺序正好相反;示意代码如下:
1 #include <iostream> 2 using namespace std; 3 4 class ZooAnimal { 5 public: 6 ZooAnimal () 7 { 8 cout<< "ZooAnimal Constructor!" <<endl; 9 } 10 }; 11 12 class Bear : public virtual ZooAnimal { 13 public: 14 Bear () 15 { 16 cout<< "Bear Constructor!" <<endl; 17 } 18 }; 19 20 class Character { 21 public: 22 Character () 23 { 24 cout<< "Character Constructor!" <<endl; 25 } 26 }; 27 28 class BookCharacter : public Character { 29 public: 30 BookCharacter () 31 { 32 cout<< "BookCharacter Constructor!" <<endl; 33 } 34 }; 35 36 class ToyAnimal { 37 public: 38 ToyAnimal () 39 { 40 cout<< "ToyAnimal Constructor!" <<endl; 41 } 42 }; 43 44 class TeddyBear : public BookCharacter, public Bear, public virtual ToyAnimal 45 { 46 public: 47 TeddyBear () 48 { 49 std::cout << "TeddyBear Constructor!" << std::endl; 50 } 51 }; 52 53 int main () 54 { 55 TeddyBear* pTeddyBear = new TeddyBear(); 56 delete pTeddyBear; 57 return 0; 58 }输出结果:
spring@spring-plum:~/XiaoPing$ g++ -o virtualconstrator virtualconstrator.cc spring@spring-plum:~/XiaoPing$ ./virtualconstrator ZooAnimal Constructor!ToyAnimal Constructor!Character Constructor!BookCharacter Constructor!Bear Constructor!TeddyBear Constructor!
0 0
- 我理解的C++虚继承
- C++:简单的继承理解
- 我对JS的继承的理解
- 我对C++中继承的理解
- 我所理解Java的继承
- 我对java继承的理解
- 我理解的封装继承和多态
- 我理解的封装继承和多态
- 谈谈我对封装,继承,抽象类,接口的理解
- 我对C语言文件的理解
- [C#]我对delegate的理解
- 我对c指针的理解
- 我理解的objective-C内存管理
- 我理解的重构(c#)
- [C++]我的理解之内存对齐
- More Effective C++----(24)理解虚拟函数、多继承、虚继承和RTTI所需的代价
- 谈一谈我对java单继承和多继承的理解。
- (C++)继承、菱形继承和虚继承的那些事儿
- Java实现逆向最大匹配中文分词算法
- python os模块
- 20140915 搭建JFinal框架及分析其与SSH的区别
- arm-linux-gcc的安装
- Android permission 访问权限大全
- 我理解的C++虚继承
- 【知识库】不懂你就OUT了!11款常见的Web应用程序框架
- 网站大访问量
- Android入门第六篇之ListView (一)
- Android---UI篇---Tab Layout(选项卡布局)
- shardedjedispool使用
- SVG 简介
- 【Java】读取网页中的内容
- .NET获取网站路径