考慮下面的程序:Test t = Test();在C++ 98中會發生什麼?
#include <iostream>
struct Test
{
int a;
};
int main()
{
Test t=Test();
std::cout<<t.a<<'\n';
}
Test t=Test();
值初始化臨時&副本進行初始化。 (大多數編譯器優化了複製操作(來源:value initialization))。但值初始化由C++03
引入。當執行Test t=Test();
時,C++98
會發生什麼?是否保證在任何C++98
編譯器中,我將得到0作爲輸出(在這種情況下,值爲t.a
)? 。它是否在C++98
中執行默認初始化?
[此問題](http://stackoverflow.com/questions/27349679/is-value-initialization-part-of-the-c98-standard-if-not-why-was-it-added-in)可能會對你感興趣。 – TartanLlama