从基类调用重写函数?

Bra*_*rad 6 c++ overriding derived-class

我的问题最好用一个例子来解释.

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

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

};

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

};
Run Code Online (Sandbox Code Playgroud)

当我创建一个实例时derivedClass,baseClass将调用构造函数,并将foo()从它的构造函数中调用它.问题是,baseClass的构造函数正在调用它自己,foo()并且没有被覆盖foo()的派生类已被覆盖.反正有没有让baseClass调用重写函数,而不是它自己的函数定义?

Syd*_*ius 18

您不应该从构造函数中调用虚方法,因为该对象尚未完全构造.本质上,派生类尚不存在,因此无法调用其方法.

  • 有关使类似事情发生的方法,请参阅C++ FAQ Lite 23.6:http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.6 (2认同)