class BaseClass {
public:
virtual void method1(){
method2();
};
virtual void method2(){
std::cout << "Base Method" << std::endl;
};
}
class DerivedClass : public BaseClass {
virtual void method2(){
std::cout << "Derived Method" << std::endl;
};
}
int main() {
DerivedClass derived;
derived.method1();
}
在上面的例子中,我得到了“Derived Method”作为输出结果——这是为什么呢?
我知道
DerivedClass
继承自BaseClass
,因此derived
可以调用method1
。但我不明白,为什么当从BaseClass
中调用它时,DerivedClass
的method2
会隐藏BassClass
的method2
。对于任何糟糕的代码/错误感到抱歉——我还是C++的新手。
BaseClass::method2()
被声明为虚函数。 - Oktalist