您的位置:首页 > 其它

如何禁用拷贝构造函数和禁用重载赋值运算符

2016-11-23 15:43 495 查看
自定义了一个类,当你觉得不需要系统默认的拷贝构造函数以及重载赋值运算符时,你需要手动禁用这些。

如果类的成员中有指针的话,浅拷贝方式的结果是两个不同对象的指针指向同一块内存区域,容易出现访问冲突,多次delete等错误,不是我们所希望的。

禁止拷贝/赋值

将拷贝构造函数和重载赋值运算符设为private来禁止拷贝

#define DISABLE_COPY(Class) \

Class(const Class &); \

Class &operator=(const Class &)

class Widget  

{  

public:  

    int* pi;  

private:  

   DISABLE_COPY(Widget);

};

===============
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: