带有参数的类构造函数, 数组问题
如下一个简单的类:
class A {
public:
A() { printf("con\n");}
A( int i):a(i) {;}
~A() { printf("dec\n");}
int a;
};
如果生成一个10元素的数组,可以
A* pA = new A[10];
这里调用的是A的没有参数的构造函数
但是如何调用带有参数的的构造函数 A( int i ) 呢???
A(1) [10] ? 编译不通过!
[解决办法]
标准C++不提供在数组NEW上进行除默认值初始化之外的初始化。
你的需求可以这样解决:
A *p = new A[10];
for( int i = 0; i < 10; ++i )
new ( p + i ) A( 10 );