函数覆盖本机C++

Min*_*wth 1 c++ overriding

下面的代码是从派生类的函数调用基类的重写函数的正确方法吗?:

#include "stdafx.h"
#include <iostream>

class BaseClass
{
public:
    virtual void foo()
    {
        std::cout << "BaseClass::foo()" << std::endl;
    }
};
class DerivedClass : BaseClass
{
public:
    virtual void foo()
    {
        __super::foo();

        std::cout << "DerivedClass::foo()" << std::endl;
    }
};
int main()
{
    DerivedClass* dc = new DerivedClass();

    dc->foo();

    delete dc;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Che*_*Alf 6

不,您使用的呼叫__super::foo()是使用Microsoft语言扩展.

相反,你可以写BaseClass::foo().

或者如果你有typedef BaseClass Base,那么Base::foo().

干杯&hth.,