亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為什么這里要使用初始化列表Watch(Time &t):m_tTime(t){},不能使用賦值運算Watch(Time &t){m_tTime = t;}?

class Watch

{

public:

Watch(Time &t){m_tTime = t;}

void display()

{

cout << m_tTime.m_iHour << endl;

cout << m_tTime.m_iMinute << endl;

cout << m_tTime.m_iSecond << endl;

}

public:

Time m_tTime;

};



正在回答

2 回答

因為Time類沒有默認構造函數 初始化列表先于構造函數執行 所以這里只有用初始化列表? 如果你要用賦值運算符的話 只有在Time類中設置默認構造函數

3 回復 有任何疑惑可以回復我~
#1

akane_14 提問者

謝謝!
2020-02-20 回復 有任何疑惑可以回復我~

因為編譯器總是確保所有成員對象在構造函數體執行之前初始化,所以類類型的數據成員對象,在進入構造函數體之前就已經完成了構造。所以這里的m_tTime成員對象會在初始化列表(此處為空)執行完前進行實例化,所以會調用Time類的默認構造函數,而你Time類中又沒有默認構造函數,所以報錯。

1 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
C++遠征之模板篇
  • 參與學習       91140    人
  • 解答問題       325    個

本C++教程力求即學即會,所有知識以實踐方式講解到操作層面

進入課程

為什么這里要使用初始化列表Watch(Time &t):m_tTime(t){},不能使用賦值運算Watch(Time &t){m_tTime = t;}?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號