關于Watch w(t);
Watch w(t);
拷貝構造函數并不需要函數名和類名同名
之前課上只說了拷貝構造函數的格式是: 類名(const 類名 &變量名)
這里換成對象就是? ?類名(const 類名 &對象名),&對象名只是一個引用,引用的這個對象t是有參數值的
類中實例化的對象沒有傳值,但是這個對象需要傳值,由于參數列表相同,所以給類中實例化的對象m_tTime傳了t
各位大佬,我這樣理解有問題嗎?
Watch w(t);
拷貝構造函數并不需要函數名和類名同名
之前課上只說了拷貝構造函數的格式是: 類名(const 類名 &變量名)
這里換成對象就是? ?類名(const 類名 &對象名),&對象名只是一個引用,引用的這個對象t是有參數值的
類中實例化的對象沒有傳值,但是這個對象需要傳值,由于參數列表相同,所以給類中實例化的對象m_tTime傳了t
各位大佬,我這樣理解有問題嗎?
2019-03-06
舉報
2019-03-20
正解如下:
Watch類中定義了對象成員,即?
以及一個拷貝構造函數
的確是類名與拷貝構造函數要同名,一樓說的沒毛病,是我當時理解錯了
該拷貝構造函數傳入的是Time類型的引用t,而t剛剛好是主函數中初始化的
在這里使用了如下的初始化列表,意思就是將t的內容傳給m_tTime
這是一個深拷貝,即將t對象的數據內容傳給了m_tTime,?從而使得當拷貝構造函數執行完畢后,m_tTime有相應的數據成員內容,即
2019-03-07
這個練習中像下面這樣寫也可以編譯通過,也就是說寫成拷貝構造函數的確能運行,但這么看不就違背了拷貝構造函數必須類名和函數名同名的規定了么?
Watch(const Time &t):m_tTime(t)? ?{? }
2019-03-07
同為小白過來說說我的理解:
1、拷貝函數應該是要跟類名同名的,跟構造函數類似,區別在于拷貝函數會有一個const變量的參數。
2、顧名思義,拷貝函數的作用是拷貝,拷貝的對象就是傳入的const變量的參數,這個參數就是對象的引用。
3、通過賦值的方式實例化對象,這個值就是傳入給拷貝函數的參數,拷貝函數因此有了拷貝的對象。