次の2行の違いは何ですか?"int * a = new int"と "int * a = new int()"の違いは何ですか?
int *a = new int;
int *a = new int();
次の2行の違いは何ですか?"int * a = new int"と "int * a = new int()"の違いは何ですか?
int *a = new int;
int *a = new int();
int *a = new int;
a
(値すなわちこの場合標準当たりとして不定あるに未初期化オブジェクトである)デフォルト初期化オブジェクトを指しています。
int *a = new int();
a
(値すなわちこの場合標準当たりとしてゼロあるにゼロで初期化オブジェクトである)値初期化オブジェクトを指しています。
第一の変形デフォルトの初期化は、動的組み込み例えばint
ような種類のは、任意の初期化を実行しないint
を、割り当てられました。
int
ことが0
の価値与え、ゼロ初期を意味し、それを値が初期化第二の変形例。
C++ 11§8.5、P7、C++ 11§8.5、P5、およびOP場合にはC++ 11§8.5、値初期化のためにP6、ゼロ初期化し、それぞれ、デフォルトの初期化、興味がある(と私は非常にそれを疑う)。テストは、この違いを公開しない可能性があること – WhozCraig
注:自動ストレージ用とは異なり、動的に割り当てられたメモリは、多くの場合、簡単なテストプログラムではゼロとなってしまいます、とだけ以前のメモリが再利用されますと、大きなプログラムで「ゴミ」が含まれています。 – hvd