Я не знаю точно, как работает код. Как A c0 = новый C(); * даже работа? Как я могу сделать объект «A» с указателем «C»?Как работает наследование?
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' означает, что« C »является« B ». Кроме того, 'B' является' A', поэтому 'C' также является' A'. Поскольку 'C' является' A', неудивительно, что вы можете назначить его 'A *'. – nwp
Ум ... Но в этом коде используются только очень простые, связанные с наследованием свойства детского сада, связанные с наследованием. Как можно «понять наследство», но «заблудиться» в этом? – AnT