C++ を学習していますが、int 変数の初期化について少し混乱しています。
このコード (コメントを含む) は、このトピックの Nawaz の回答からのコピー/貼り付けです。Why does C++ require a user-provided default constructor to default-const object?
struct POD
{
int i;
};
POD p1; //uninitialized - but don't worry we can assign some value later on!
p1.i = 10; //assign some value later on!
POD p2 = POD(); //initialized
p2 については、次のことが起こっていることを理解しています。
- デフォルトのコンストラクター POD() が呼び出され、一時 POD オブジェクトが作成されます。コンストラクターはユーザー定義ではないため、暗黙的です。int のような組み込み型の場合、暗黙のデフォルト コンストラクターは何もしません (初期化しません)。したがって、私はいくつかのランダムなものを含んでいます。
- コピー コンストラクターが呼び出され、一時 POD オブジェクト ( iがまだ初期化されていない) を使用して p2 が作成されます。したがって、p2 の i メンバーも初期化しないでください。
ただし、コメントには、p2が初期化されていると書かれています! どんな説明でも大歓迎です。ありがとう。