ここでは、+
操作で使用できるクラスの例を示します。この追加クラスはメモリリークの原因になりますか?
class A
{
public:
int *array;
A()
{
array = new int[10];
}
~A()
{
delete[] array;
}
A operator+ (const A &b)
{
A c;
for(int i=0; i<10; i++)
c.array[i] += array[i] + b.array[i];
return c;
}
};
int main()
{
A a,b,c,d;
/* puts some random numbers into the arrays of b,c and d */
a = b+c+d;
}
はa
b+c+d
かどうかの結果をコピーする前に、デストラクタを実行しますか?そうでない場合、どのようにメモリが漏れていないことを確認しますか?
+
演算子オーバーロードは、このようにしてオペランドが変更されないように設計されています。
[あなたの前の質問](http://stackoverflow.com/q/10360232/78845)の回答が間違っていましたか?なぜ 'std :: vector'ではなく' new int [10] 'を使用していますか? – Johnsyweb
これは理解しようとする例であると仮定していますが、これが本当のコードであれば、 'int array [10];'を定義し、適切な削除を心配する必要はありません。 – Corbin
@Johnsyweb答えは素晴らしかったですが、これは単なる例であり、あまり考えなくてもスケッチしました。この例は、他の回答に対する私の見解を示すものではありません。 –