可以给静态数组定义一个初始化列表。例如:动态数组的初始化列表?
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(无效*)。
有一个动态数组的静态初始值设定项列表可能会适用于即时编译加速器核心的情况,这些加速器核心只有有限的堆栈可用,但同时您构建(加速器编译时间=主机运行时间)静态初始化程序列表。
我假设没有(因为这需要编译器生成额外的代码,即将参数的值复制到堆位置)。我认为C++ 0x支持这一些,但我不能使用它。 现在我可以使用这样的构造。也许有人知道一招......
最好!
为了记录,“动态”并不意味着“可变长度”。这确实是一个“很好的功能”,能够创建一个新的动态对象并将其初始化为已知的初始内容。这正是构造函数为类和结构类型对象所做的。 –
为了澄清,C++中的'dynamic'意味着分配在堆上而不是堆栈上。我广泛使用两个存储器商店,因此有两个初始化器列表工作将非常方便。就像在许多情况下,当我想在堆上创建一个数组列表时,我不得不求助于对象(比如std :: vector)而不是普通数组,因为@MikeHousky说,C++只支持在堆上初始化对象那一刻,不是阵列。这里没有技术或性能问题 - 只是C++的限制。 – holocronweaver