为什么在构造期间在基类中调用重写的虚函数?

时间:2015-10-18 13:14:17

标签: c++

有一个c ++程序:

getElementById

并输出:

# include <iostream>

using namespace std;

class base
{
public:
    base()
    {
        cout<<"base"<<endl;
        f();
    }
    virtual void f() {
        cout<<"base f"<<endl;
    }
};

class derive: public base
{
    public:
        derive()
        {
            cout<<"derive"<<endl;
            f();
        }
    void f() {
        cout<<"derive f"<<endl;
    }
};

int main()
{
    derive d;
    return 1;
}

我想知道为什么会出现基数?

我在基地的问题扩展到:

base
base f
derive
derive f

但这应该指出为什么基本f打印出来?

1 个答案:

答案 0 :(得分:0)

在构造期间,在基类构造函数中,对象的实际类型为base,即使它后来继续变为derived。在破坏期间也是如此,顺便说一下,您还可以使用typeid来验证类型。