读书人

带有参数的类构造函数 数组有关问题

发布时间: 2012-12-31 11:57:52 作者: rapoo

带有参数的类构造函数, 数组问题
如下一个简单的类:

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 );


delete的时候直接delete [] p就行了,placement new不需要delete。
[解决办法]
一楼正解

读书人网 >C++

热点推荐