首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-28 
请教:多继承的虚基类问题问题描述如下:A- B,A派生出BA- C,A派生出C(B,C)- D,B和C派生出DA是虚基类,A、B

请教:多继承的虚基类问题
问题描述如下:
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 ( ); //?蝋???禜?场㎝?场
};

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的构造函数传参

热点排行