クラスでのメンバーの初期化について
C では、クラスを作成するときに、メンバーを明示的または暗黙的に初期化できます。明示的に初期化されていない場合、動作はメンバーの型によって異なります。
メンバー変数の初期化
-
プリミティブ型: プリミティブ型(例: int、ポインタ) は 初期化されません デフォルト。これらには、宣言時にメモリ内に存在する任意の値が含まれます。
-
オブジェクト: クラスのオブジェクトは、デフォルト コンストラクターを呼び出すことによって初期化されます。デフォルトのコンストラクターが定義されていない場合は、それらを明示的に初期化する必要があります。
-
参照: 参照は、既存の参照に対して常に初期化する必要があります。それ以外の場合、コンパイラはエラーをスローします。
例のメンバー初期化
次のクラスを考えてみましょう。
class Example {
private:
int *ptr;
string name;
string *pname;
string &rname;
const string &crname;
int age;
public:
Example() {}
};
If anこのクラスのインスタンス (例) は明示的な初期化なしで作成され、メンバーは次のように初期化されます。以下:
-
ptr: ジャンクが含まれています
-
name: 空の文字列
-
pname: 含まれていますJunk
-
rname: コンパイル エラー (参照を初期化する必要があります)
-
crname: コンパイル エラー (const 参照を初期化する必要があります)
-
年齢: が含まれていますジャンク
ベスト プラクティスへの影響
メンバーの初期化を理解することは、エラーのないプログラムを作成するために重要です。適切な動作を保証するには:
- 予期しない値を防ぐためにプリミティブ型とポインターを明示的に初期化します。
- 参照が有効な参照に初期化されるか、エラーがスローされることを確認します。
- 未定義の動作を回避するには、デフォルトのコンストラクターを定義するか、オブジェクトを明示的に初期化します。
以上がC でクラス メンバーはどのように初期化されるのか、またベスト プラクティスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。