如何使用C ++中的new为类动态分配内存?

时间:2013-05-09 11:03:15

标签: c++ linux

有以下课程:

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

};

如何使用参数化构造函数和new运算符为此类的10个对象分配内存?

1 个答案:

答案 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::arraystd::vector而不是使用原始内存分配:

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