gpt4 book ai didi

c++ - 在这个例子中是否需要重载的 operator= ?

转载 作者:太空宇宙 更新时间:2023-11-04 15:06:41 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
What is The Rule of Three?

人们说,如果你需要一个析构函数,那么你实际上需要一个重载的 operator=

struct longlife{ };
class z
{
z(){};
~z(){ for( auto it=hold.begin();it!=hold.end() ++it ) delete(*it); };
vector<longlife*> hold;
};

假设在hold 上插入的所有指针都是堆分配的,为什么在这个例子中除了解构函数还需要其他东西?

任何其他我的意思是,

z& operator=( const z&ref )
{
hold = ref.hold;
return *this;
}

会:

z a;
a.hold.push_back( heap_item );
z a2;
a2 = a;

导致内存泄漏?有时很难理解为什么三的规则是规则

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com