比如
class A
{
public:
A():i(0){}
A( int num ): i( num ) {}
int i;
};在申请10个A对象时如何用带参数的构造函数初始化呢?
A *pA;
pA = new A[10];这样只能调用默认构造函数,我想用带参数的来初始化,改怎么做?
class A
{
public:
A():i(0){}
A( int num ): i( num ) {}
int i;
};在申请10个A对象时如何用带参数的构造函数初始化呢?
A *pA;
pA = new A[10];这样只能调用默认构造函数,我想用带参数的来初始化,改怎么做?
想要调用有参数的构造函数必须让对象一个一个生成
用循环吧
每次
A a(参数);
然后用memcpy把a里面的内容复制到new出来的对象中也是可以的
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]); 为每个指针分配对象。
}这样会更麻烦,有时候想用简单的办法实现,结果却弄得很复杂。
用默認構造函數分配内存,然後寫個setxx函數。再用循環初始化
这种是无参构造函数。一个一个来构造吧。