函数覆盖本机C ++

时间:2011-06-28 02:15:10

标签: c++ function-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;
}

2 个答案:

答案 0 :(得分:6)

不,使用__super::foo()的来电是Microsoft language extension

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

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

干杯&amp;第h。,

答案 1 :(得分:1)

BaseClass::foo()正是您要找的