2013-05-09 57 views
-6

有以下類:如何在C++中使用new動態地分配內存?

class mem 
{ 
    private: 
     int data; 
    public: 
     mem(){} 
     mem(int a) 
     { 
       data=a; 
     } 
     void dataDis() 
     { 
       cout <<"valu of i is "<< data << endl; 
     } 

}; 

如何使用參數化的構造函數和新的運營商分配內存這一類的10對象?

+0

你要10個對象都在同一個陣列,或者你想10個指針獨立分配的對象? – 2013-05-09 11:05:04

+0

你想讓它們都以相同的值或10個不同的值初始化嗎?你是否特別需要使用'new'或者更方便的'std :: array'或'std :: vector'是否可以接受? – 2013-05-09 11:11:21

+0

@Adrian我希望10個對象的數組以及10個獨立分配的指針。 – BSalunke 2013-05-09 11:14:09

回答

2

既然你說你需要直接使用new,那麼你可以很容易地十個單獨的對象做到這一點:

mem * mem1 = new mem(42); 
// and so on 

new分配數組時,您不能指定initialisers;你必須讓他們默認初始化,然後重新分配它們:

mem * mems = new mem[10]; 
mems[0] = mem(42); 
// and so on 

不要忘了將它們分配到智能指針(或刪除它們,當你與他們完成,如果怪異要求使用new也禁止其他形式的明智的內存管理)。

當你發現自己在少瘋限制工作,使用std::arraystd::vector不是與原始的內存分配周圍碴的:

std::vector<mem> mems = {42, 63, /* and so on */}; 
+0

初始化向量的語法需要C++ 11中新的初始化程序列表功能 - 尚未在所有編譯器中提供。 – dtopham75 2013-05-09 12:46:59