码迷,mamicode.com
首页 > 编程语言 > 详细

c++ 初始化顺序

时间:2016-06-07 19:04:42      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:

class Base
{
public:
	Base(int i) { cout << i; }
	~Base() { }
};
class Base1: virtual public Base
{
public:
	Base1(int i, int j=0) : Base(j) { cout << i; }
	~Base1(){}
};
class Base2: virtual public Base
{
public:
	Base2(int i, int j=0) : Base(j) { cout << i; }
	~Base2(){}
};
class Derived : public Base2, public Base1
{
public:
	Derived(int a, int b, int c, int d) : mem1(1), mem2(2), Base1(3),
		Base2(4),Base(1)
	{ cout << b; }
private:
	Base2 mem2;
	Base1 mem1;
};

int main(int argc, char **argv)
{
	 Derived objD (1, 2, 3, 4); 


	getchar();
	return 0;
}

  

  • 首先,任何虚拟基类的构造函数按照它们被继承的顺序构造;
  • 其次,任何非虚拟基类的构造函数按照它们被继承的顺序构造;
  • 最后,任何成员对象的构造函数按照它们声明的顺序调用;

c++ 初始化顺序

标签:

原文地址:http://www.cnblogs.com/kaishan1990/p/5567789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!