代码之家  ›  专栏  ›  技术社区  ›  Nikola Smiljanić

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

c++
  •  8
  • Nikola Smiljanić  · 技术社区  · 15 年前
    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 回复  |  直到 15 年前
        1
  •  24
  •   Daniel Daranas    9 年前

    foo() Base ,使用:

    d.Base::foo();
    
        2
  •  6
  •   Marcelo Cantos    15 年前
    d.Base::foo();
    

    请注意 d.foo() Derived::foo 不管是否 foo