我有一个三层深的类层次结构,如下所示:
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
在内存中?