读书人

请问:多继承的虚基类有关问题

发布时间: 2012-02-28 13:06:35 作者: rapoo

请教:多继承的虚基类问题
问题描述如下:
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的构造函数传参

读书人网 >C++

热点推荐