关于对象数组,不适用默认构造函数
我创建了一个了类A,现在想创建个对象数组来存储A的对象,但又不想使用默认的构造函数进行初始化。
class A{
public:
A(int ma):_ma(ma){}
private:
int _ma;
}
//现在想用创建一个10个元素的对象数组,每个元素都用5来初始化。
//A a[10]; //error
//A a[10](5); //error
对象 存储 #include <iostream>
using namespace std;
class A{
public:
A(int ma):_ma(ma){};
void* operator new(size_t size, void* p){return p;}
private:
int _ma;
};
int main(int argc, char *argv[])
{
void *p = operator new[](10*sizeof(A));
A *pa = static_cast<A*>(p);
for(int i=0;i<10;i++) new(pa+i) A(5);
return 0;
}