如何使用其复制构造函数和复制赋值是私有的对象?

coa*_*nor 3 c++ private-constructor private-methods

在阅读TCPL时,我遇到了一个问题,正如标题所述,然后'私有'类是:

class Unique_handle {
private:
    Unique_handle& operator=(const Unique_handle &rhs);
    Unique_handle(const Unique_handle &rhs);
public:
    //...
};
Run Code Online (Sandbox Code Playgroud)

使用代码是:

struct Y {
    //...
    Unique_handle obj;
};
Run Code Online (Sandbox Code Playgroud)

我想执行这样的操作:

int main()
{
    Y y1;
    Y y2 = y1;
}
Run Code Online (Sandbox Code Playgroud)

虽然,这些代码来自TCPL,但我仍然无法得到解决方案......任何人都可以帮助我,欣赏.

Eli*_*sky 6

顾名思义,这Unique_handle并不意味着被复制.它的实现通过禁用复制构造函数和复制赋值运算符来确保它.

有权访问a的多个实例的一个解决方案Unique_handle是持有指向它的指针,并复制指针.然后多个实例Y指向相同的唯一句柄.

但是,请注意在这种情况下正确管理资源.