C の関数宣言における「= delete」は何を意味しますか?

Barbara Streisand
リリース: 2024-11-22 19:59:16
オリジナル
386 人が閲覧しました

What does

関数宣言における "= 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート