我有以下代碼:C++構造初始化
struct Y {
string& s1; //string s1; throws no error
Y(string src) : s1(src) { cout<<"s1: "<<s1<<endl; }
void show(){ cout<<s1<<endl; }
};
int main()
{
Y y1("Krypton");
y1.show(); //run-time error
}
y1.show()應顯示「氪」,但我得到一個運行時錯誤(由於S1是未初始化時y1.show()是爲叫什麼名字?)。
Q1。爲什麼s1在構造函數初始化列表中已經初始化時會被初始化? Q2。如果我使用字符串s1,爲什麼不會得到相同的錯誤;而不是參考?
任何幫助將不勝感激。
Regards,
Jay。
描述* actual *錯誤通常是一個好主意,而不是僅僅說「我得到一個運行時錯誤」。 – jalf