ホームページ >バックエンド開発 >C++ >メンバー初期化子リストとコンストラクターの割り当て: いつどちらを使用する必要がありますか?

メンバー初期化子リストとコンストラクターの割り当て: いつどちらを使用する必要がありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 14:24:15384ブラウズ

Member Initializer List vs. Constructor Assignment: When Should You Use Which?

初期化リストとコンストラクターの割り当て: 内部とコードの違い

指定された C コードで、メンバー初期化子リストとコンストラクターでの値の割り当て。

メンバー初期化子リスト

コンストラクター名の後ろのかっこで囲まれたメンバー初期化子リストは、次の初期化に使用されます。

  • 定数メンバー
  • 参照 (ポインターではない) )
  • 基本クラスのメンバー (基本クラスへのパラメータ)一方、コンストラクターの割り当ては、非定数メンバーを初期化し、非参照変数に値を割り当てるために使用されます。

内部相違点

内部的には、生成されるコードは 2 つのアプローチで若干異なります。メンバー初期化子リストを使用する場合、コンパイラーは構築中にメンバー値をクラス オブジェクトに直接配置します。これにより、余分な代入操作が回避されます。

コードの違い

指定されたコード スニペットの比較:

両方のスニペットが 3 つのコードを初期化します。指定された値を持つプライベート メンバー _capacity、_data、および _len。ただし、最初のスニペットはメンバー初期化子リストを使用し、2 番目のスニペットはコンストラクター割り当てを使用します。

メンバー初期化子リストを使用する場合

MyClass::MyClass() : _capacity(15), _data(NULL), _len(0)
{
}
MyClass::MyClass()
{
  _capacity = 15;
  _data = NULL;
  _len = 0;
}
初期化リストを使用する必要があります:

定数メンバーを初期化するには初期化するには参照

基底クラスのコンストラクターに引数を渡す

  • 標準の初期化 (非定数メンバー、非参照) の場合は、どちらのアプローチも使用できます。一般に、効率上の理由から、メンバー初期化子リストが推奨されます。

以上がメンバー初期化子リストとコンストラクターの割り当て: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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