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にのみ存在させ、B()をC2から呼び出すか?継承。親クラスの子クラス関数を呼び出す
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にのみ存在させ、B()をC2から呼び出すか?継承。親クラスの子クラス関数を呼び出す
メンバーメソッドは、C++ではデフォルトでvirtual
ではありません(あなたはJavaから来ますか?)
あなたが書いた:
class C1 {
void A();
void B();
}
class C2 : public C1 {
void B();
}
あなたははC2
でB()
をオーバーライドしていないが、はそれを隠します。
オーバーライドするには、基本クラスにvirtual
と宣言する必要があります(以降のクラスでは仮想クラスは不要です)。
'C2'の後に' C2'の後に 'new C2'を書く必要はありません。 – Shahbaz
@Shahbaz - fixed) – Eddie