我得到提示,对于具有作为指针的成员变量的类,我需要注意在分配时正确地对它们进行内存管理。以下方法旨在避免内存泄漏:
class SomeClass {
SomeClass& SomeClass::operator =(SomeClass& from) {
// clone
if (&from != this) {
this->dispose();
this->clone(from);
}
return *this;
}
void SomeClass::clone(const SomeClass& from) {
this->array = from.array;
}
void SomeClass::dispose() {
delete[] this->array;
}
};
假设到目前为止这是正确的,是否可以执行以下操作:
定义一个超类Object
,它实现operator=
并具有抽象方法clone
和dispose
. 任何具有指针成员的类都应该Object
作为超类,以便它继承operator=
,并提醒我需要实现clone
and dispose
。
- 这样的超类会是什么样子?
- 通过继承来做到这一点是个好主意吗?