【发布时间】:2011-10-30 19:03:13
【问题描述】:
可以为静态数组的定义提供一个初始化列表。示例:
int main()
{
int int_static[2] = {1,2};
}
动态数组是否可以使用类似的初始化列表?
int main()
{
int* int_ptr = new int[2];
}
这更接近我想要做的:
struct foo
{
foo(){}
foo(void * ptr): ptr_(ptr) {}
void * ptr_;
};
int main()
{
foo* foo_ptr = new foo[10];
}
在初始化时不应调用默认构造函数,而是调用 foo:foo(void*)。
对于只有有限数量的可用堆栈的加速器内核进行即时编译时,为动态数组提供静态初始化器列表可能会派上用场,但同时您构建您的具有(加速器编译时间 = 主机运行时间)静态初始化列表的对象。
我假设不是(因为这需要编译器生成额外的代码,即将参数的值复制到堆位置)。我认为 c++0x 支持其中的一些,但我不能使用它。 现在我可以使用这样的构造。也许有人知道一个窍门..
最好的!
【问题讨论】: