如何禁止用户使用C++类的拷贝构造、拷贝运算符

  1. 编译器自动生成copy构造函数 、copy assignment操作符的条件?
    如果没有声明copy构造函数、copy assignment操作符,但代码中用到copy构造函数、copy assignment操作符,那么编译器将自动生成copy构造函数、copy assignment操作符

  2. 不想用户使用,也不想编译器自动生成的copy构造函数、copy assignment操作符,
    方法有二:
    1)将 copy构造函数、copy assignment操作符定义为private,并且不实现。
    类使用者使用时,会出现链接错误提示。
    2)继承一个copy构造函数、copy assignment操作符 为 private的类,编译器自动生成的copy构造函数、copy assignment操作符 会 调用父类的copy构造函数、copy assignment操作符,而父类这些是private的,不允许子类调用,导致编译器错误。
    例:

class Uncopyable {
protected:
Uncopyable();
~Uncopyable();
private:
Uncopyable(const Uncopyable &copy);
Uncopyable &operator=(const Uncopyable &copy);
};

class myClass : private Uncopyable{
...
};
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。