【发布时间】:2013-03-01 04:53:48
【问题描述】:
好的,所以我知道有很多多态线程飞来飞去,但我还没有遇到这种情况。
class Base {
public:
virtual void method1() {
cout << "BaseMethod1" << endl;
}
void method2() {
cout << "BaseMethod2" << endl;
}
};
class Derive: public Base {
public:
void method1() {
cout << "DeriveMethod1" << endl;
method2();
}
void method2() {
cout << "DeriveMethod2" << endl;
}
};
int main() {
Base* p = new Derive();
p->method1();
}
让我感到困惑的是派生类中的method1调用了method2。那么,既然 Base 类中的 method2 没有声明为 virtual,那么它会是哪个 method2?
提前谢谢!
【问题讨论】:
-
method2()括号丢失,如果我没记错的话 -
@Pubby 尝试的东西不一定会导致 C++ 的启蒙。事实上,在发生未定义行为的情况下,它可能会导致一种危险的错误安全感。
-
回答这个问题要查找的关键词是"name hiding"。
-
-1。首先做一个基础研究,因为这是一个非常基础的问题,问编译器,然后可能问一个更具体的问题。
-
@Antimony 如果您喜欢阅读该标准,那就按照自己的方式来吧。我只关心人们在提问之前做一些研究。
标签: c++ polymorphism