結論:
1、對於有自己寫構造函數的類,不論類型名后面有沒有括號,都用構造函數進行初始化; 2、如果沒有構造函數,則不加括號的new只分配內存空間,不進行內存的初始化, 3、而加了括號的new會在分配內存的同時初始化為0。
例1:
#include <iostream> using namespace std; int main() { int *b=new int[4]; for(int i=0;i<4;i++){ cout<<b[i]<<endl; } delete []b; b=NULL; system("pause"); return 0; }
運行結果:
-842150451
-842150451
-842150451
-842150451
可見,new操作符並沒有對內存進行初始化。
例2:
#include <iostream> using namespace std; int main() { int *b=new int[4](); for(int i=0;i<4;i++){ cout<<b[i]<<endl; } delete []b; b=NULL; int *a=new int(); cout<<*a; system("pause"); return 0; }
運行:
輸出結果為:
0
0
0
0
可見,已經進行了初始化。