比如
class A
{
public:
   A():i(0){}
   A( int num ): i( num ) {}
   int i;
};在申请10个A对象时如何用带参数的构造函数初始化呢?
A *pA;
pA = new A[10];这样只能调用默认构造函数,我想用带参数的来初始化,改怎么做?

解决方案 »

  1.   

    用你这种方法只能调用无参的构造函数
    想要调用有参数的构造函数必须让对象一个一个生成
    用循环吧
    每次
    A a(参数);
    然后用memcpy把a里面的内容复制到new出来的对象中也是可以的
      

  2.   

    变通的办法就是把参数放到数组里,用循环生成10个对象,
    int nParaments[10]={1,2,3,4,5,6,7,8,9,0};
    A** pa = new (A*)[10];  //这里是分配10个对象的指针,而不是10个对象。int i;
    for (i=0; i<10; i++)
    {
        pa[i] = new A(nParaments[i]); 为每个指针分配对象。
    }这样会更麻烦,有时候想用简单的办法实现,结果却弄得很复杂。
      

  3.   

    ls的方法個人覺得應該變通,我們都知道new分配是會多給你些内存的 。。
    用默認構造函數分配内存,然後寫個setxx函數。再用循環初始化
      

  4.   

    pA = new A[10];
    这种是无参构造函数。一个一个来构造吧。