此問題與職位here有關。是否有可能在函數調用或構造函數調用中初始化數組?例如,foo類的構造函數需要一個大小爲3的數組,所以我想調用foo({0,0,0})。我試過這個,但它不起作用。我希望能夠在其他對象的構造函數初始化列表中初始化foo類型的對象,或者在不首先創建單獨的數組的情況下初始化foo。這可能嗎?函數調用或構造函數調用中的C++數組初始化
回答
不符合當前標準。它會在C++ 11
在GCC,您可以使用一個投來強制時間的創作,但它不是標準的C++(C99)是可能的:
typedef int array[2];
void foo(array) {} // Note: the actual signature is: void foo(int *)
int main() {
foo((array){ 1, 2 } );
}
這適用於C99,但不適用於C++ 03(在C++ 0x中都沒有 - 這是一個複合文字)。 – 2010-04-20 16:45:48
代碼是可以的(macports)gcc最高4.6;海灣合作委員會4.7報告錯誤:採取臨時陣列的地址。 – 2012-08-20 10:24:01
C++ 11是當前的標準,所以這個答案需要更新。 – 2013-08-31 15:57:08
如果您的設計允許,你可以考慮將數據包裝到一個類中,並在默認的構造函數中初始化爲0(或者你選擇的任何值)。
- 1. 調用構造函數並初始化
- 2. 使用函數構造函數初始化調用
- 3. 只有一個構造函數調用的數組初始化
- 4. 調用函數初始化
- 5. 如何調用初始化數組長度的數組構造函數?
- 6. 構造函數在初始化調用構造函數的列表中調用子代碼
- 7. 在構造函數中調用未初始化的變量
- 8. 在初始化中調用正確值的構造函數嗎?
- 9. 從C#中的參數化構造函數調用無參數構造函數?
- 10. C#調用構造函數
- 11. 初始化C++構造函數的初始化列表中的char數組
- 12. 初始化結構數組在類的構造函數C++
- 13. php中的函數調用構造函數並初始化對象
- 14. 初始化構造函數C++
- 15. C++模板構造函數初始化
- 16. c#構造函數與初始化
- 17. 在構造函數中初始化數組或向量
- 18. 從參數化構造函數調用默認構造函數
- 19. 用super構造函數初始化()
- 20. 將數據庫初始化調用放入C#構造函數中可以嗎?
- 21. 如何(重新)調用初始化對象的構造函數?
- 22. 由於靜態初始化而被調用的構造函數
- 23. C++在構造函數中初始化函數指針
- 24. C#「構造函數」與Obj-C「初始化函數」相同嗎?
- 25. 複製構造函數不被調用用於複製初始化或優化?
- 26. 構造函數中的初始化塊
- 27. Cpp。哪個被首先調用/初始化?類構造函數或其成員類的構造函數?
- 28. C++:數組的構造函數初始化列表?
- 29. 帶數組的C++構造函數初始化列表
- 30. 調用拷貝構造函數與統一初始化
首先你談論數組初始化,然後你突然需要初始化一個類對象。那麼你需要初始化什麼:數組對象或類對象? – AnT 2010-04-20 16:15:07
初始化一個類是一個特例,我作爲一個例子,是我問這個問題的原因。但是,您也可以使用一個函數foo,該函數使用大小爲3的數組並且想將其稱爲:foo({0,0,0})。我已經改變了OP,使其更明顯。 – david 2010-04-20 16:21:59
是的,但您仍然在問:「是否可以在不分配數組的情況下初始化數組?」。嗯,是的,這是可能的。例如,'int a [10] = {5}'初始化一個數組而不分配它,就像你問的那樣。然而,這看起來並不像你真正感興趣的。 – AnT 2010-04-20 16:24:35