为什么我不能用c ++中的new调用参数化构造函数?

Ita*_*tay 2 c++ arrays dynamic-memory-allocation

如果你知道这个问题,

假设我有一个其CTOR接收整数的A类;

我做不到以下事情:

A* arr = new A[3](A(2), A(3), A(5));
Run Code Online (Sandbox Code Playgroud)

或者任何其他方式来初始化数组的几个成员.我四处看看,这是不可能的.

我的问题是为什么,我为什么要这样做

A arr[3] = {A(1), A(2), A(3)};
Run Code Online (Sandbox Code Playgroud)

但我不能做到以上?记忆方面或其他什么.

非常感谢你!

sbi*_*sbi 9

在当前标准C++(称为C++ 03)中无法做到这一点的原因是历史性的.这将在即将推出的C++标准中进行清理(目前预计将在今年发布,这将使其成为C++ 11),这将引入所谓的"统一初始化语法".

根据Stroustrup的C++ 0x FAQ,你可以写

A* p = new A[3] {A(1), A(2), A(3)};
Run Code Online (Sandbox Code Playgroud)

你的编译器实际上已经很好地支持了这一点.