C でプログラミングしていると、「メンバー変数はコンストラクター初期化リストで初期化する必要があります。」というコンパイル エラーが発生することがあります。このエラーは通常、クラスのコンストラクターでメンバー変数を初期化する必要がある場合に発生します。
では、このようなエラーにはどう対処すればよいのでしょうか?この記事では、読者がメンバー変数の初期化の原理と方法をよりよく理解できるように、C でのメンバー変数の初期化について詳しく紹介します。
C では、クラス内のメンバー変数は次の 2 つの方法で初期化できます。
(1) コンストラクター内での初期化初期化リスト
#(2) コンストラクターの関数本体での初期化#その中で、最初の方法が推奨される方法であり、効率的であるだけでなく、メンバー変数が確実に初期化されることを保証します。コンストラクター内にあります。実行を開始する前に適切に初期化されています。 2 番目の方法は、各メンバー変数の初期化が必要であり、コンストラクターへの複数の呼び出しも必要となるため、さらに面倒です。
コンストラクタ初期化リストクラスを実装するときに、クラスのメンバー変数を初期化する必要がある場合は、コンストラクターの初期化リストでそれらを初期化する必要があります。
例:
class Student {
private:
string name; int age;
public:
Student(string name_, int age_): name(name_), age(age_){ }
};
この例では、コンストラクターの初期化リストは、クラス内の 2 つのメンバー変数 name と age を初期化します。そうすることで、コードが簡素化されるだけでなく、メンバー変数が正しく初期化されるようになります。
メンバ変数の初期化順序例:
クラス A {
private:
int a; int b;
public:
A(int _a, int _b): a(_a), b(_b){ }
};
この例では、メンバー変数 a と b の初期化順序は、クラス内で宣言された順序と同じです。コンストラクターの初期化リストで a と b の順序が逆になっている場合、変数 a が初期化されていないため、コンパイル エラーが発生します。
概要以上がC++ 構文エラー: メンバー変数はコンストラクター初期化リストで初期化する必要があります。どのように対処すればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。