class C1 {
void A();
void B();
}
void C1::A(){ return B(); }
class C2 : public C1 {
void B();
}
C2 *obj = new C2;
obj->A(); // returns B() from C1
为什么调用 C1 中的 B()?如何让A()只存在于C1,而从C2调用B()?
最佳答案
你需要在 C1
中使 B()
成为 virtual
功能。
虚函数基本上是函数指针,在对象初始化时取值。如果您new C1
,函数指针将指向C1::B
,而如果您new C2
,函数指针将指向 C2::B
.
注意:要阅读有关虚拟
和相关主题的更多信息,请搜索函数覆盖 和多态性。
关于c++ - 遗产。从父类调用子类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9908435/