比方說,我寫了一個類Foo
與構造函數Foo(int)
。 我有這段代碼:C++:類/結構體是否在編譯時初始化?
Foo a(i), b = a + Foo(2);
如果我調用的代碼構造以恆定的,例如Foo(2)
,編譯器是否運行一次並將結果存儲爲運行時,還是在運行時執行?無論結構/類是否僅包含POD數據類型,它是一樣的嗎?
假設它在運行時執行(我認爲是這種情況),有沒有辦法使它在編譯時運行,或者具有與運行時相同的效果?
編輯:恐怕我沒有說清楚。我指的是代碼的Foo(2)
部分,它是完全不可變的。另外,我無法使用C++ 11(我正在使用GCC 4.1並且無法升級),所以constexpr
雖然有效,但不適合我。
這是在全球範圍或功能? –
查看'constexpr' –
我正在考慮函數內的例子。我擔心不得不多次評估'Foo(2)'。 –