2013-05-09 54 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