C コンストラクターの初期化子リスト
提供された C コードで使用されるコロン演算子 (":") は、メンバー初期化子リストの一部です。 、これはコンストラクター内でクラスのメンバー変数を初期化する方法です。質問の提案に反して、これは明示的な個別の代入と同等ではありません。
この例では:
class MyClass { public: MyClass() : m_classID(-1), m_userdata(0) { } int m_classID; void *m_userdata; };
コンストラクター MyClass() は、2 つのメンバー変数を初期化するデフォルトのコンストラクターです。 、m_classID と m_userdata をそれぞれ値 -1 と 0 に設定します。これは、コンストラクターのパラメーター リストに続き、コンストラクター本体に先行するメンバー初期化子リストを使用して行われます。
メンバー初期化子リストは、クラスで宣言された順序でクラス メンバー変数を初期化します。各初期化はカンマで区切られます。初期化子リストで指定された値は、コンストラクターが呼び出されるときに、対応するメンバー変数にすぐに割り当てられます。
対照的に、質問で示唆されているように、コンストラクター本体内で個別の代入を実行すると、明示的に変更されます。すでに初期化されている値。これは、メンバー初期化子リストによって実行される初期化とは異なります。
したがって、メンバー初期化子リストは、コンストラクター内でクラス メンバー変数を初期化する便利な方法を提供し、明示的な個別の代入とは異なります。
以上がC コンストラクターのコロン演算子 (「:」) の目的は何ですか?また、明示的なメンバー変数の代入との違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。