美文网首页
如何禁止用户使用C++类的拷贝构造、拷贝运算符

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

作者: b036101467d7 | 来源:发表于2019-05-27 10:16 被阅读0次
    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{
    ...
    };
    

    相关文章

      网友评论

          本文标题:如何禁止用户使用C++类的拷贝构造、拷贝运算符

          本文链接:https://www.haomeiwen.com/subject/mlsctctx.html