回答編集履歴
1
ミス投稿したので修正
answer
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
こんにちは。
|
2
2
|
|
3
|
-
静的領域
|
3
|
+
静的領域は全て[ゼロ初期化](https://ja.cppreference.com/w/cpp/language/zero_initialization)されるので以下は正しい筈です。
|
4
4
|
|
5
5
|
> a.b.i; ///0
|
6
6
|
> a.ptrB; ///NULL
|
7
7
|
|
8
8
|
動的領域の変数はゼロ初期化されないので以下は間違っている筈です。
|
9
9
|
|
10
|
-
>
|
10
|
+
> localA.b.i; ///0
|
11
|
-
localA.ptrB; ///NULL
|
11
|
+
> localA.ptrB; ///NULL
|
12
|
+
|
13
|
+
int型等の基本型やenum型は、ゼロ初期化を除き自動的には初期化されません。クラス型は初期化を省略するとデフォルト・コンストラクタで初期化されます。
|
14
|
+
|
15
|
+
ゼロ初期化のルールは非常に複雑ですし、実行されない時もあるので、原則としてゼロ初期化には頼らない方が確実と思います。そのためには、コンストラクタを定義して、全ての基本型やenum型メンバ変数を初期化するのが望ましいです。
|