什么是"=删除"?

Liu*_*Liu 7 c++ deleted-functions c++11

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

thread_guard(thread_guard const&) = delete;

thread_guard& operator=(thread_guard const&) = delete;
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 11

=delete是C++ 0x的一个新功能.这意味着一旦用户使用这样的函数,编译器应该立即停止编译并抱怨"此函数被删除"(参见:默认和删除函数 - 控制 Bjarne Stroustrup的C++ 0x FAQ 的默认值).

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


Nav*_*een 10

它是用于禁用类的某些功能的新C++ 0x语法.有关 示例,请参阅维基百科.在这里,您要告诉该课程thread_guard既不可复制也不可分配.