ポインターであるメンバー変数を持つクラスの場合、割り当て時にそれらを適切にメモリ管理することに注意を払う必要があるというヒントを得ました。次のメソッドは、メモリ リークを回避するためのものです。
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
dispose
- そのようなスーパークラスはどのように見えるでしょうか?
- 継承によってこれを行うのは良い考えですか?