C++ 遗产从父类调用子类函数
为什么C1中的B()被调用?如何使A()只存在于C1中并从C2调用B()?您需要在C++ 遗产从父类调用子类函数,c++,oop,qt,C++,Oop,Qt,为什么C1中的B()被调用?如何使A()只存在于C1中并从C2调用B()?您需要在C1中生成B() 虚拟函数基本上是在对象初始化时获取其值的函数指针。如果new C1,函数指针将指向C1::B,而如果new C2,函数指针将指向C2::B 注释:阅读关于虚拟及相关主题,搜索函数重写和多态性。 < P>方法在C++中默认不是虚拟< /> >(你来自java)吗?p> 当你写作时: class C1 { void A(); void B(); } void C1::A(){ re
C1
中生成B()
虚拟函数基本上是在对象初始化时获取其值的函数指针。如果new C1
,函数指针将指向C1::B
,而如果new C2
,函数指针将指向C2::B
<强>注释:阅读关于
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
您没有覆盖C2
中的B()
,而是隐藏它
要覆盖它,必须在基类中声明它
virtual
(virtual在后续类中是不必要的)。您不需要在新C2
中的之后写入()
class C1 {
void A();
void B();
}
class C2 : public C1 {
void B();
}