首页 > 编程语言 > 详细

C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序

时间:2014-01-21 23:31:18      阅读:433      评论:0      收藏:0      [点我收藏+]

虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序

 

多重继承的时候, 构造顺序是 虚继承按顺序优先, 再次是其他按顺序, 由基类至派生类; 析构顺序正好相反;

 

代码如下:

/*
 * cppprimer.cpp
 *
 *  Created on: 2014.1.10
 *      Author: Spike
 */

/*eclipse cdt, gcc 4.8.1*/

#include <iostream>
#include <string>

class ZooAnimal {
public:
	ZooAnimal () {
		std::cout << "ZooAnimal Constructor!" << std::endl;
	}
	void zooprint (void) { std::cout << "Zoo Animal!" << std::endl; }
};

class Bear : public virtual  ZooAnimal {
public:
	Bear (){
		std::cout << "Bear Constructor!" << std::endl;
	}
	void bearprint (void) { std::cout << "Bear!" << std::endl; }
};

class Character {
public:
	Character () {
		std::cout << "Character Constructor!" << std::endl;
	}
};

class BookCharacter : public Character {
public:
	BookCharacter () {
		std::cout << "BookCharacter Constructor!" << std::endl;
	}
};

class ToyAnimal {
public:
	ToyAnimal () {
		std::cout << "ToyAnimal Constructor!" << std::endl;
	}
};

class TeddyBear : public BookCharacter, public Bear,
								public virtual ToyAnimal
{
public:
	TeddyBear () {
		std::cout << "TeddyBear Constructor!" << std::endl;
	}
};

int main (void)
{
	TeddyBear TB;
}


输出:

ZooAnimal Constructor!
ToyAnimal Constructor!
Character Constructor!
BookCharacter Constructor!
Bear Constructor!
TeddyBear Constructor!


 

C++ - 虚继承(virtual inheritance)的构造(construct)和析构(destruct)顺序

原文:http://blog.csdn.net/caroline_wendy/article/details/18596991

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!