可以給靜態數組定義一個初始化列表。例如:動態數組的初始化列表?
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