クラス メンバーの初期化を扱う場合、明示的な初期化が無視された場合に発生する暗黙的なプロセスを理解することが重要です。この知識は、バグのないプログラムを保証するために非常に重要です。
オブジェクトの場合、デフォルトのコンストラクターが呼び出されます。 std::string を考えてみましょう。デフォルトのコンストラクターは空の文字列として初期化します。ただし、クラスにデフォルトのコンストラクターがない場合は、明示的な初期化が必須です。
ポインタを含むプリミティブ型は初期化されず、任意のデータである可能性のある以前のメモリ内容を保持します。
References, on一方、常に初期化する必要があります。したがって、初期化しないままにしておくと、コンパイル エラーが発生します。
指定されたクラス構造の検査:
class Example { int *ptr; string name; string *pname; string &rname; const string &crname; int age; };
明示的な初期化が実行されない場合、メンバー変数は次の状態になります。
ptr: Contains junk (arbitrary memory value) name: Initialized as an empty string ("") pname: Contains junk (arbitrary memory value) rname: Compilation error (required initialization) crname: Compilation error (required initialization) age: Contains junk (arbitrary memory value)
これらの暗黙的な初期化メカニズムを理解することは、堅牢でエラーのない記述を行うために不可欠です。プログラム。
以上が初期化が省略された場合、クラスのメンバーはどうなりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。