1. 重写拷贝构造,可以避免深拷贝与浅拷贝的问题,避免内存被重复释放;
2. 重写赋值运算符: 如果类对象中有指针,对象是给旧对象赋值,这个时候调用赋值方法,如果没重写,也会导致内存重复释放,
所以类写了拷贝构造最好也要重写赋值运算符;
class ResourceHolder {
private:
int* resource;
public:
// 拷贝构造函数
ResourceHolder(const ResourceHolder& other) {
resource = new int(*other.resource);
}
// 赋值运算符
ResourceHolder& operator=(const ResourceHolder& other) {
if (this!= &other) {
delete resource;
resource = new int(*other.resource);
}
return *this;
}
};