以下代码是从派生类的函数调用基类的重写函数的正确方法吗?:
#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;
}
答案 0 :(得分:6)
不,使用__super::foo()
的来电是Microsoft language extension。
相反,你可以写BaseClass::foo()
。
或者,如果您有typedef BaseClass Base
,那么Base::foo()
。
干杯&amp;第h。,
答案 1 :(得分:1)
BaseClass::foo()
正是您要找的