C 中new是否進行初始化的問題

2021-07-04 11:33:58 字數 489 閱讀 6140

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...