重複の可能性:
3 つのルールとは?
デストラクタが必要な場合は、実際にはオーバーロードが必要だと人々は言いますoperator=
struct longlife{ };
class z
{
z(){};
~z(){ for( auto it=hold.begin();it!=hold.end() ++it ) delete(*it); };
vector<longlife*> hold;
};
挿入されたすべてのポインターhold
がnew
ヒープに割り当てられたと仮定すると、なぜこの例でデコンストラクター以外に何かが必要なのでしょうか?
つまりanything else
、
z& operator=( const z&ref )
{
hold = ref.hold;
return *this;
}
だろう:
z a;
a.hold.push_back( heap_item );
z a2;
a2 = a;
メモリリークの原因?3 のルールがルールである理由を理解するのが難しい場合があります