可以删除抽象类而不是孩子吗?是否所有的分配都会被解除分配?可以删除抽象类而不是孩子吗?
考虑一个下列情形作为一个例子,但请不要限制你的答案是一个案例:
struct A {
virtual void fun() = 0;
};
struct B : public A {
void fun() { /* actually doing something here. */ }
};
struct C {
A *a;
void OneTask() {
// (...)
a = new B();
}
void AnotherTask() { /* using fun() in some way. */ }
~C() { delete a; }
};
的想法是有OneTask的多个可能的结果(),它导致的分配指向从A继承的不同类的指针,B仅仅是一个例子;然后在AnotherTask()和C类
你应该阅读有关[当使用虚拟析构函数(http://stackoverflow.com/questions/461203/when-to-use-virtual-destructors)。 – Joe 2013-04-10 20:03:17
为什么'struct A'? – Dariusz 2013-04-10 20:03:49
@Dariusz:为什么不呢? – 2013-04-10 20:05:16