我想了解類的默認構造函數的工作,我不能夠想出這樣的情況:
編譯器生成的默認構造函數的工作 - C++
案例1:
class A
{
public:
int m;
string s;
};
然後,我創建這個類的對象:
一個)A a; // Result: compiler initializing m with garbage value
b)A a = A(); // Result : compiler initializing m with garbage value
情況2:現在我除去串s
從我的類:
class A
{
public:
int m;
};
一)A a; // Result: when try to access m I get run time error
B)A a = A(); //Result: m is initialized to zero
Q1)爲什麼有差異的情況下,1和2的情況下? Q2)如果我在這兩種情況下向我的班級提供默認構造函數,那麼a)& b)會是相同的?
2.a感覺很奇怪,'m'應該是未初始化的,但不應該給你一個運行時錯誤... –
我同意。不知道爲什麼會出現運行時錯誤。 – paddy
@Matteo Italia:是的,這是問這個問題的主要原因......我不知道爲什麼我得到運行時錯誤。 – JackSparrow