不確定正確的稱號,但本次討論源於:Initializiation混亂
Do the parentheses after the type name make a difference with new?
在Visual Studio 2008中,當我運行下面的代碼:
struct Stan
{
float man;
};
int main()
{
Stan *s1 = new Stan;
Stan *s2 = new Stan();
}
檢查當地人,s1有一個隨機值的未初始化的浮點數。 s2的值初始化爲0.
但是,如果我添加一個字符串數據成員,兩個實例中的float都是未初始化的。
struct Stan
{
std::string str;
float man;
};
但是,兩個實例中的字符串都被初始化了。我嘗試添加其他非POD類而不是字符串,但後一種情況只會在添加字符串數據成員時發生。我認爲添加一個字符串仍然保持POD類?如果它不是POD類,那麼它應該有值初始化,不管括號是什麼,對吧?當我添加一個字符串數據成員時,爲什麼浮點數(以及其他原始數據類型)沒有初始化?
'後者'的情況下,原始數據類型沒有初始化,但字符串是。 – 2010-01-17 01:12:49