8

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

thread_guard(thread_guard const&) = delete;

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

2 回答 2

12

=delete是 C++0x 的一个新特性。这意味着一旦用户使用该函数,编译器应立即停止编译并抱怨“此函数已删除”(另请参阅:默认和删除的函数——Bjarne Stroustrup 的 C++0x 常见问题解答的默认值控制)。

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

于 2010-09-13T09:27:36.740 回答
10

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

于 2010-09-13T09:26:59.753 回答