在派生类型的对象上从基类调用虚方法

时间:2010-05-07 10:14:18

标签: c++

class Base
{
public:
    virtual void foo() const
    {
        std::cout << "Base";
    }
};

class Derived : public Base
{
public:
    virtual void foo() const
    {
        std::cout << "Derived";
    }
};

Derived d; // call Base::foo on this object

尝试了转换和函数指针,但我无法做到。是否有可能打败虚拟机制(只是想知道它是否可能)?

2 个答案:

答案 0 :(得分:24)

要显式调用foo()中定义的函数Base,请使用:

d.Base::foo();

答案 1 :(得分:6)

d.Base::foo();

请注意,无论d.foo()是否为虚拟,Derived::foo都会调用foo