8

これらの2つの奇妙なコード行はどういう意味ですか?

thread_guard(thread_guard const&) = delete;

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

2 に答える 2

12

これ=deleteはC++0xの新機能です。これは、ユーザーがそのような関数を使用すると、コンパイラはすぐにコンパイルを停止し、「この関数は削除されました」と文句を言う必要があることを意味します(デフォルトおよび削除された関数-BjarneStroustrupによるC++ 0x FAQのデフォルトの制御も参照)。

thread_guard(thread_guard const&)コピーコンストラクタでありthread_guard& operator=(thread_guard const&)、代入コンストラクタです。thread_guardしたがって、これら2行を合わせると、インスタンスのコピーが無効になります。

于 2010-09-13T09:27:36.740 に答える
10

これは、クラスの特定の機能を無効にするための新しいC++0x構文です。例については、ウィキペディアを参照してください 。ここでは、クラスthread_guardはコピーも割り当てもできないことを示しています。

于 2010-09-13T09:26:59.753 に答える