如何在父类的子类里调用构造函数

 我来答
黑马程序员
2017-09-01 · 改变中国IT教育,我们正在行动
黑马程序员
黑马程序员为大学毕业后,有理想、有梦想,想从事IT行业的年轻人改变自己的命运。黑马程序员成就IT黑马
向TA提问
展开全部
比如在基类里面调用一个虚函数,那么你在构造一个派生类对象的时候在基类调用的这个虚函数不是派生类里面的版本,而是基类里面的版本。

C/C++ code?

struct Base{
Base(){ fun();}
virtual void fun(){cout<<"Base version"<<endl;}
};

struct Drived:public Base {
Drived(){}
virtual void fun(){cout<<"Drived version"<<endl;}
};

int main()
{
Drived obj;

system("pause");
return 0;
}

当父类构造的时候,子类还没有出生,所以调用子类版本的虚函数也就无意义了
不要在构造函数和析构函数中调用虚函数。
因为基类构造函数在子类之前执行,当基类的构造函数执行时,子类的数据成员没有被初始化。
如果虚函数在基类构造的时候调用,而进入到子类中的时候,子类的函数需要访问到本地数据,但是这些数据成员还没有被初始化,调用一个没有被初始化的东东是很危险滴。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式