関数宣言における "= delete" の意味を理解する
C 11 では、"= delete" 構文を使用して関数宣言が削除されます。機能し、その使用を効果的に防止します。これは、コピーを禁止したり、特定の変換を制限したりするためによく使用されます。
コピー コンストラクターと代入演算子の削除
おそらく、「= delete」の最も一般的な使用例は次のとおりです。コピーを禁止します。たとえば、コピーされたくない「my_class」というクラスがある場合、次のように宣言できます。
class my_class { public: ... my_class(const my_class &) = delete; ... };
この宣言により、コンパイラがデフォルトのコピー コンストラクターと " の代入演算子を生成するのを防ぎます。 my_class."
望ましくない変換の防止
別の使用法「=delete」は特定の型変換を禁止します。たとえば、「long long」値のみから構築したいクラス「Z」がある場合、「= delete」を使用して、より小さな型からの変換を防ぐことができます:
struct Z { public: ... Z(long long); // can initialize with a long long Z(long) = delete; // but not anything less };
追加の関数修飾子
「= 0」(関数を純粋仮想に設定する) と「= delete」(関数を削除する) のほかに、 C には他の関数修飾子はありません。ただし、「override」や「final」などの他のキーワードを使用して、仮想関数の動作を変更できます。
以上がC の関数宣言における「= delete」は何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。