如何在c++中使用new为类动态分配内存

How to allocate memory dynamically for class using new in C++?

本文关键字:new 动态分配 内存 c++      更新时间:2023-10-16

有以下类:

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

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

既然您说您需要直接使用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 */};