コードがどのように機能するかはわかりません。どのように c0 = new C(); *でも動作しますか? 'C'からポインタ 'A'オブジェクトを作るにはどうすればいいですか? ここで継承はどのように機能していますか?
class A {
public:
A() { print("Constructor of A"); }
virtual ~A() { print("Destructor of A"); }
};
class B : public A {
public:
B() { print("Constructor of B"); }
~B() { print("Destructor of B"); }
};
class C : public B {
public:
C() { print("Constructor of C"); }
~C() { print("Destructor of C"); }
};
int main() {
print("A* = C");
A* c0 = new C();
delete c0;
print("B* = C");
B* c1 = new C();
delete c1;
print("C* = C");
C* c2 = new C();
delete c2;
return 0;
}
私は長い時間前に私は、継承を理解と思ったが、今、私はそれを使用するために必要なとき、私はちょうどコードで失われてしまいました。
'class C:public B'は" a "C"が "B"であることを意味します。さらに、「B」は「A」であるので、「C」も「A」である。 'C 'は' A'なので、 'A *'に割り当てることは驚くことではありません。 – nwp
Um ...しかし、このコードでは、言語の非常に基本的な "幼稚園グレード"継承関連機能しか使用していません。 「相続」を理解することは可能ですが、これでは「迷子になる」ことはありますか? – AnT