Переопределение функций в нативном C ++ - PullRequest
1 голос
/ 28 июня 2011

Является ли следующий код правильным способом вызова переопределенной функции базового класса из функции производного класса?:

#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 ]

6 голосов
/ 28 июня 2011

Нет, ваш звонок с использованием __super::foo() использует расширение языка Microsoft .

Вместо этого вы можете написать BaseClass::foo().

Или, если у вас есть typedef BaseClass Base, затем Base::foo().

Приветствия & hth.,

1 голос
/ 28 июня 2011

BaseClass::foo() это то, что вы ищете

...