我编写了一个纯虚拟析构函数,并在抽象基类中实现它并在派生类中重写它。
但是,在其中一个类中,我有一个指向基类对象的指针 现在,应该以这种方式编写派生类的析构函数:
virtual ~DerivedClass()
{
delete this->pointerToAnotherDerivedClassObject;
}
或者会自动删除该对象吗?由于总是调用基类析构函数所以我无法决定它是否会处理它。
编辑:我说它的错误是指向基类的指针,因为它实际上是另一个派生类对象的指针。
答案 0 :(得分:2)
但是,在其中一个类中,我有一个指向基类对象的指针。 现在,应该以这种方式编写派生类的析构函数
由于git mv
指向内存中的另一个对象,然后是,您的pointerToAnotherDerivedClassObject
析构函数需要显式DerivedClass
该对象(或将原始指针包装在内部)智能指针 - delete
,std::auto_ptr
或std::unique_ptr
- 并让它std::shared_ptr
为您提供对象)仅 delete
是为了拥有那个其他对象。否则,如果您不拥有它,请不要DerivedClass
。
答案 1 :(得分:0)