-6

次のクラスがあります。

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

};

パラメータ化されたコンストラクタと新しい演算子を使用して、このクラスの10個のオブジェクトにメモリを割り当てる方法は?

4

1 に答える 1

2

直接使用する必要があると言うのでnew、10 個の個別のオブジェクトに対して簡単に実行できます。

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

で配列を割り当てるときに初期化子を指定することはできませんnew。それらをデフォルトで初期化してから、再割り当てする必要があります。

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

それらをスマートポインターに割り当てることを忘れないでください(または、使用が必要な奇妙な要件のためにnew他の形式の賢明なメモリ管理も禁止されている場合は、それらを使い終わったら削除してください)。

狂気の少ない制限の下で作業していることに気付いた場合は、生のメモリ割り当てをいじる代わりにstd::arrayorを使用してください。std::vector

std::vector<mem> mems = {42, 63, /* and so on */};
于 2013-05-09T11:22:56.270 に答える