有以下课程:
class mem
{
private:
int data;
public:
mem(){}
mem(int a)
{
data=a;
}
void dataDis()
{
cout <<"valu of i is "<< data << endl;
}
};
如何使用参数化构造函数和new运算符为此类的10个对象分配内存?
答案 0 :(得分:2)
由于您说您需要直接使用new
,因此您可以轻松地为十个单独的对象执行此操作:
mem * mem1 = new mem(42);
// and so on
使用new
分配数组时,无法指定初始化程序。你必须让它们默认初始化,然后重新分配它们:
mem * mems = new mem[10];
mems[0] = mem(42);
// and so on
不要忘记将它们分配给智能指针(或者在完成它们时删除它们,如果使用new
的奇怪要求也禁止其他形式的合理内存管理)。
如果您发现自己在较少疯狂的限制下工作,请使用std::array
或std::vector
而不是使用原始内存分配:
std::vector<mem> mems = {42, 63, /* and so on */};