可能的重复:
什么是三法则?
人们说如果你需要一个析构函数,那么你实际上需要一个重载的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;
导致内存泄漏?有时很难理解为什么三规则是规则