gpt4 book ai didi

c++ - 从基类调用重写函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:46 24 4
gpt4 key购买 nike

我的问题可能最好用一个例子来解释。

例如,我有 2 个类:一个基类和一个派生类:

class baseClass
{
public:
baseClass()
{
foo();
}
virtual bool foo() { printf("baseClass"); return false;}

};

class derivedClass : public baseClass
{
public:
bool foo()
{
printf("derivedClass");
return true;
}

};

当我创建 derivedClass 的实例时,baseClass 中的构造函数将被调用,并且 foo() 将从它的构造函数中调用.问题是,baseClass 的构造函数正在调用它自己的 foo() 而不是派生类已覆盖的被覆盖的 foo()。无论如何让 baseClass 调用被覆盖的函数,而不是它自己定义的函数?

最佳答案

您不应该从构造函数中调用虚拟方法,因为该对象尚未完全构造。本质上,派生类还不存在,所以它的方法不能被调用。

关于c++ - 从基类调用重写函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4073210/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com