c++在new時的初始化的規律可能為:對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化;如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。
以下**:
#include using namespace std;
int main()
;};
main函式中使用語句:
a *b=new a;
cout輸出結果都是10,可見都進行了初始化。
但是,如果吧a的建構函式刪掉,則兩個語句輸出的結果分別是:隨機數,0。
由此可見,c++在new時的初始化的規律可能為:對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化;如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。
new的初始化
有如下c int buffer new int 512 在預設情況下,new是不會對分配的int進行初始化的。要想使分配的int初始化為0,需要顯式地呼叫其初始化函式 int buffer new int 分配的乙個int初始化為0 int buffer new int 0 分配的乙個int初始化為...
關於C 的new是否會對記憶體初始化的問題
先把結論放上來 c 在new時的初始化的規律可能為 對於有建構函式的類,不論有沒有括號,都用建構函式進行初始化 如果沒有建構函式,則不加括號的new只分配記憶體空間,不進行記憶體的初始化,而加了括號的new會在分配記憶體的同時初始化為0。以下 include using namespace std ...
使用new時的初始化問題
在使用new分配記憶體單元時,一般希望新分配的單元能被初始化為全0。注意以下兩條語句 c code 1 2 int ptrint1 newint 新分配的記憶體單元裡的值是未知 int ptrint2 newint 加上括號。新分配的記憶體單元裡的值是全0 例1 在區域性區域內 c code 1 2...