当我写一个类(比如说class nocopy)时,是否有可能完全阻止复制操作符的存在?如果我没有定义一个,而其他人写的东西就像
nocopy A;
nocopy B;
A = B;
Run Code Online (Sandbox Code Playgroud)
编译器将自动生成一个定义.如果我自己定义一个,我将阻止编译器自动生成,但上面的代码仍然是合法的.
我希望上面的代码是非法的,并生成编译时错误.我怎么做?
Alo*_*ave 61
您只需使用private访问说明符声明一个复制构造函数,甚至不定义它.
任何试图使用它的人都会因为声明它而得到编译错误private.
如果有人甚至间接使用它,您将收到链接错误.
你不能在C++ 03中做更多的事情.
但是,在C++ 11中,您可以显式删除特殊成员函数.
例如:
struct NonCopyable {
NonCopyable & operator=(const NonCopyable&) = delete;
NonCopyable(const NonCopyable&) = delete;
NonCopyable() = default;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41617 次 |
| 最近记录: |