多继承
程序示例:
#include <iostream>
using namespace std;
class A
{
protected:
int data1, data2;
public:
A(int a=0, int b=0)
{
data1 = a;
data2 = b;
cout << "A Constructor" << endl;
}
~A()
{
cout << "A Destructor" << endl;
}
};
class B
{
protected:
int data3;
public:
B(int a=0)
{
data3 = a;
cout << data3 << ", B Constructor" << endl;
}
~B()
{
cout << data3 << ", B Destructor" << endl;
}
};
class C: public A, public B
{
int data4, data5;
B bdata;
public:
C(int a1=0, int a2=0, int a3=0, int a4=0, int a5=0): bdata(a1), A(a1, a2), B(a3)
{
data4 = a4;
data5 = a5;
cout << "C Constructor" << endl;
}
~C()
{
cout << "C Destructor" << endl;
}
void show()
{
cout << data1 << ',' << data2 << ',' << data3 << ',' << data4 << ',' << data5 << endl;
}
};
int main()
{
C c(1,2,3,4,5);
c.show();
return 0;
}
输出结果:
由输出结果可知,C++对调用函数的调用处理为:先调用基类的构造函数,再调用对象成员的构造函数,最后调用对象自身的构造函数。
析构函数的调用顺序与构造函数相反