次のように、3レベルの深さのクラス階層があります。
class A {
public:
virtual ~A() {}
}
class B : public A {
public:
virtual ~B() {}
void foo(E *e) {
e->remove(this);
}
}
class C : public B {
public:
~C() {}
}
class E {
public:
void remove(A *a) {
delete a;
}
}
さて、私が疑問に思っているのはfoo()
、のオブジェクトを呼び出すとどうなるかということですC
。オブジェクト全体を削除するのでしょうか、それともオブジェクトの一部だけを削除して、その部分をメモリに残しておくのB
でしょうか。A
C