请教:多继承的虚基类问题

jzp12 2007-04-21 12:05:40
问题描述如下:
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的重载构造函数进行初始化?

不知道我的表述是否清晰。
...全文
338 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jzp12 2007-04-21
  • 打赏
  • 举报
回复
to msgsnd:
May be you misunderstand my presentation

to plo2168424:
我忘记提一点:我的虚基类,同时也是抽象类,所以A是不能实例化的.

还有谁有高见?

我写这个程序的意图在于希望这个程序可以尽可能多的C++基础知识,如:
纯虚函数,虚基类,动态空间分配,重载,多继承,多层继承...等
plo2168424 2007-04-21
  • 打赏
  • 举报
回复
没式过 可能要出错
最好把默认构造函数写起~
要不把A B C初始下~
msgsnd 2007-04-21
  • 打赏
  • 举报
回复
#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();
}
xlbdan 2007-04-21
  • 打赏
  • 举报
回复
如果A没有写任何构造函数的话,D不用管它的。

当然如果A写了任何一个构造函数,D都要直接对它负责传参

这时B和C对A的构造函数的传参就被抑制了。

D当然也需要对B和C的构造函数传参

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧