相关疑难解决方法(0)

在c ++中使用私有拷贝构造函数有什么用处

为什么人们定义私有拷贝构造函数?

何时使复制构造函数和赋值运算符私有化是一个好的设计?

如果有哪个是指针或处理到一个唯一的对象(如文件名)类没有成员,然后笏其他情况下都存在,其中私人拷贝构造函数是一个好主意?

同样的问题适用于赋值运算符.鉴于大多数C++围绕复制对象并通过引用传递,是否有任何涉及私有拷贝构造函数的好设计?

c++ copy-constructor assignment-operator

42
推荐指数
2
解决办法
3万
查看次数

在C++中禁止复制构造函数的最可靠方法是什么?

有时需要禁止C++类中的复制构造函数,以使类变为"不可复制".当然,operator=应该同时禁止.

到目前为止,我已经看到了两种方法.方法1是将方法声明为private并且不给它实现:

class Class {
//useful stuff, then
private:
    Class( const Class& ); //not implemented anywhere
    void operator=( const Class& ); //not implemented anywhere
};
Run Code Online (Sandbox Code Playgroud)

方法2是将方法声明为private并将其赋予"空"实现:

class Class {
//useful stuff, then
private:
    Class( const Class& ) {}
    void operator=( const Class& ) {}
};
Run Code Online (Sandbox Code Playgroud)

IMO第一个更好 - 即使有一些意外的原因导致从同一个类成员函数调用复制构造函数,稍后会出现链接器错误.在第二种情况下,在运行时之前不会注意到这种情况.

第一种方法有任何严重的缺点吗?什么是更好的方式,如果有的,为什么?

c++ constructor class-design copy-constructor

21
推荐指数
3
解决办法
3164
查看次数