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

虚继承(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)顺序

上一篇:机器学习中的语言比较:R、OCTAVE、Python比较


下一篇:C语言字符串