这两行奇怪的代码是什么意思?
thread_guard(thread_guard const&) = delete;
thread_guard& operator=(thread_guard const&) = delete;
答案 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
课程既不可复制也不可转让。