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

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

DDD
リリース: 2024-12-23 02:32:37
オリジナル
528 人が閲覧しました

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

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

クラス メンバーを初期化するとき、メンバー初期化子リストを使用するか、値を割り当てるかを選択できます。コンストラクター本体内。内部的には、これらのアプローチには微妙な違いがあります。

メンバー初期化子リスト

次の例に示すように、メンバー初期化子リストを使用します。

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}
ログイン後にコピー

コンストラクター本体に入る前にメンバー変数を直接初期化します。これは、次の場合に特に役立ちます。

  • 定数メンバーの初期化: これらのメンバーは、コンストラクター本体が実行される前に初期化する必要があり、メンバー初期化リストがその唯一の方法です。
  • 参照の初期化: 参照はコンストラクター本体の前に初期化する必要があり、メンバー初期化子リストは推奨されるメソッド。
  • 基本クラスのコンストラクターにパラメーターを渡す: パラメーター化されたコンストラクターを使用して基本クラスから継承する場合、メンバー初期化子リストを使用して基本クラスのメンバーを初期化する必要があります。

コンストラクターの割り当て

一方次の例のように、コンストラクター本体内で値を割り当てます。

MyClass::MyClass()
{
  _capacity=15;
  _data=NULL;
  _len=0
}
ログイン後にコピー

は、コンストラクターの実行中に初期化を実行します。このアプローチは、非定数メンバーと、コンストラクターのパラメーターに基づいて初期化できるメンバーによく使用されます。

生成されたコードの比較

一般に、どちらのアプローチでも同様のものが生成されます。コード。ただし、定数メンバーまたは参照の場合、コンストラクターの代入によってコンパイル エラーが発生するため、メンバー初期化子リストのみがそれらを初期化できます。

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

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