请教:多继承的虚基类问题
问题描述如下:
A-> B, A派生出B
A-> C, A派生出C
(B,C)-> D, B和C派生出D
A是虚基类,A、B和C都没有写出默认的构造函数,重载了A、B和C的构造函数(都仅一个),那么在写D的构造函数时是否要对A的重载构造函数进行初始化?
是否同时需要对B和C的重载构造函数进行初始化?
不知道我的表述是否清晰。
[解决办法]
#include <iostream.h>
class complex
{
double real; //?场
double imag; //?场
public:
complex();
complex(double r, double i);
void addCom(complex &c); //?衡??ぇ
void outCom ( ); //?X????场?场
};
complex::complex()
{
real=0;imag=0;
}
complex::complex(double r, double i)
{
real=r;imag=i;
}
void complex::addCom(complex &c)
{
real=c.real+real;
imag=c.imag+imag;
}
void complex::outCom()
{
cout < < "( " < <real < < ", " < <imag < < ") " < < '\n ';
}
void main()
{
complex c1(1,2),c2(3,4),c3;
c3.outCom();
c3.addCom(c1);
c3.addCom(c2);
c3.outCom();
}
[解决办法]
没式过 可能要出错
最好把默认构造函数写起~
要不把A B C初始下~
[解决办法]
如果A没有写任何构造函数的话,D不用管它的。
当然如果A写了任何一个构造函数,D都要直接对它负责传参
这时B和C对A的构造函数的传参就被抑制了。
D当然也需要对B和C的构造函数传参