什么是“=删除”?

时间:2010-09-13 09:24:29

标签: c++ c++11 deleted-functions

这两行奇怪的代码是什么意思?

thread_guard(thread_guard const&) = delete;

thread_guard& operator=(thread_guard const&) = delete;

2 个答案:

答案 0 :(得分:11)

=delete是C ++ 0x的新功能。这意味着一旦用户使用这样的函数,编译器应立即停止编译并抱怨“此函数被删除”(参见:Bjarne Stroustrup的C ++ 0x FAQ的defaulted and deleted functions -- control of defaults)。

thread_guard(thread_guard const&)是复制构造函数,thread_guard& operator=(thread_guard const&)是赋值构造函数。因此,这两行一起禁用了thread_guard实例的复制。

答案 1 :(得分:10)

这是用于禁用类的某些功能的新C ++ 0x语法。有关示例,请参阅wikipedia。在这里,您要告诉我thread_guard课程既不可复制也不可转让。