ホームページ >バックエンド開発 >C++ >C コンパイラはどのようなメンバー関数を自動的に生成しますか?

C コンパイラはどのようなメンバー関数を自動的に生成しますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-25 09:04:09981ブラウズ

What Member Functions Does the C   Compiler Automatically Generate?

C のコンパイラによって自動生成されるメンバー関数

質問:

C では、どのようなメンバー関数が機能しますか?コンパイラはクラスを自動的に作成しますか?これはすべてのクラスで一貫して発生しますか?

回答:

コンパイラは、必要に応じて、クラスに対して次のメンバー関数を生成する場合があります:

C 98/03:

  • デフォルト コンストラクター: ユーザー定義コンストラクターが存在しない場合に作成されます。
  • コピー コンストラクター: 作成されましたユーザー定義のコピー コンストラクターがない場合
  • コピー代入演算子: ユーザー定義のコピー代入演算子が存在しない場合に作成されます。
  • デストラクター: ユーザー定義のデストラクターがない場合に作成されます。

これらの関数は、必要なときに、によって明示的に宣言されていない場合にのみ生成されます。

C 11:

C 98/03 の関数に加えて、C 11 では次のものが導入されました。

  • Move Constructor: ユーザー定義のコンストラクター、代入演算子、またはデストラクターの場合、関数は削除対象としてマークされておらず、すべてのメンバーとベースは移動可能です。
  • 移動代入演算子: 同様に、移動コンストラクターと同じ条件で生成されます。

デフォルトのコンストラクター:

デフォルトconstructor は、引数をとらない暗黙的に生成されるコンストラクターです。すべてのメンバー変数をデフォルト値またはゼロに初期化します。デフォルトのコンストラクターは、引数を手動で指定せずにクラスのオブジェクトを作成する場合に不可欠です。

以上がC コンパイラはどのようなメンバー関数を自動的に生成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。