2017-05-28 66 views

回答

4

由於new[]分配的內存塊,並給你一個指針到內存中。在new Food[5]的情況下,將有空間用於Food類型的五個對象,每個對象都被構造。你得到的指針是五個對象中的第一個。

您還可以使用

Food foods[5]; 

創建一個數組。

然而,在C++來創建「陣列」的優選方式是使用任一std::array或者如果你需要一個動態陣列(或需要它是在堆上)std::vector

std::array<Food, 5> foods; // Create a static fixed-size array of 5 Food objects 

std::vector<Food> foods(5); // Create a dynamic, expandable array of 5 Food object 
+0

你可以提到std :: array或爲什麼要使用std :: vector over new [] –

0

你再也Ť一定需要它是一個指針,則可以很容易地創建一個全局/本地陣列:

Food foods[5]; 

當在堆,陣列可以是可變參數長度:

Food *foods = new Food[std::rand() + 1]; 

但是你要刪除它們爲數組明確:

delete[] foods; // otherwise they leak 

大部分是有意義的使用STL的容器中的時間:

#include <vector> 
#include <array> 

std::vector<Food> foods(5, cheezeburger()); // in case we need more cheeseburgers 
std::array<Food, 5> foods; // in case five cheeseburgers should be enough for everyone 

他們會爲你做一切惱人的內存管理。

STL的自動指針也知道堆上的數組。

相關問題