// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cstdlib>
#include <new>
#include <iostream>
using namespace std;
class element1{
public:
element1(int)
{
cout<<"element1(int)"<<endl;
}
~element1()
{
cout<<"~element1()"<<endl;
}
};
class a11{
public:
a11(int)
{
cout<<"a11(int)"<<endl;
}
~a11()
{
cout<<"~a11()"<<endl;
}
};
class a1{
public:
a1(int)
{
cout<<"a1(int)"<<endl;
}
~a1()
{
cout<<"~a1()"<<endl;
}
};
class a2:public a11,public a1{
public:
element1 ele;
a2(int):ele(1),a11(1),a1(1)
{
cout<<"a2(int)"<<endl;
}
~a2()
{
cout<<"~a2()"<<endl;
}
};
int _tmain(int argc, _TCHAR* argv[])
{
a2 ax(1);
return 0;
}
如果多类继承的话:
各个基类的构造顺序按照类定义的时候给出的进行。
class a2:public a11,public a1{
}
则先构造a11,再构造a1。
运行结果:
a11(int)
a1(int)
element1(int)
a2(int)
~a2()
~element1()
~a1()
~a11()

本文通过一个具体的C++程序示例,详细解释了当一个派生类从多个基类继承时,这些基类的构造函数调用顺序遵循的规则。具体而言,构造顺序依据类定义中基类出现的顺序,首先构造最先声明的基类。

被折叠的 条评论
为什么被折叠?



