如果类A和类B是从同一个基类N派生的,且类D是类A和类B的多重继承派生类,要求在程序中通过类A和类B的构造函数去调用基类N的构造函数,分别对类A和类B的数据成员a初始化。
#include<iostream>
using namespace std;
class N
{
public:
N(int aN)
{
a=aN;
}
int a;
void display()
{
cout<<"a="<<a<<endl;
}
};
class A:public N
{
public:
A(int aN,int aA):N(aN)//通过类A的构造函数调用基类N的构造函数
{
a1=aA;
}
// 或A(int aN,int aA):N(aN),a1(aA)
// {
//
// }
int a1;
};
class B:public N
{
public:
B(int aN,int aB):N(aN)//通过类B的构造函数调用基类N的构造函数
{
a2=aB;
}
// 或B(int aN,int aB):N(aN),a2(aB)
// {
//
// }
int a2;
};
class C:public A,public B
{
public:
C(int aN,int aA,int aB,int aC):A(aN,aA),B(aN,aB) //通过类C的构造函数调用直接基类A和B的构造函数
{
a3=aC;
}
// 或C(int aN,int aA,int aB,int aC):A(aN,aA),B(aN,aB),a3(aC) //通过类C的构造函数调用直接基类A和B的构造函数
// {
//
// }
int a3;
void show()
{
cout<<"a3="<<a3<<endl;
}
};
int main()
{
A(1,2);//对类A数据成员a、a1初始化
B(1,2);//对类A数据成员a、a2初始化
// C(1,2,3,4);//对类C数据成员a、a1、a2、a3初始化
return 0;
}