文章目錄
構造函數
構造函數沒有返回值類型,函數名和類名相同,而且可以重載,使用不同的函數參數進行對象初始化。
初始化列表
初始化列表的初始化順序
調用其他的構造函數“委派構造函數”
C++11的就地初始化
這裏使用了兩種初始化方法:1、使用等號2、使用大括號(也就是初始化列表)
默認構造函數,或稱“缺省構造函數”
自動調用成員變量的默認構造函數
如果成員表量中含有對象,會先實現成員變量的構造函數
隱式定義的默認構造函數
顯示聲明默認構造函數
如果我們自己定義了構造函數,就不會自動生成默認構造函數
顯式刪除構造函數
使用delete
關鍵字
對象數組的初始化
析構函數
進行動態內存的釋放
析構函數可以有更多的操作
隱式定義的析構函數
局部對象的構造和析構
- 作用域:變量能夠引用的區域,{ }會形成一個作用域
- 局部對象:析構函數會在生命週期結束時被調用
全局對象的構造和析構
儘量少用全局對象(使用函數參數代替)
引用
引用就是對同一個變量的不同名稱,使用任一個變量名進行變量的修改賦值,都可以改變變量的值,並且引用不像指針可以轉換指向的對象。
引用作爲函數參數
引用作爲函數返回值,就可以直接修改值
引用和指針的區別
爲什麼使用引用
優勢:更靈活地支持運算符重載
- 創建時必須初始化
類的運算符重載
如果是成員函數,則只需要一個函數參數,因爲已經有this指針指向當前對象。
可以重載的運算符
前綴和後綴的++和–
使用啞元參數進行判斷
只能成員函數重載的運算符
輸入輸出流運算符的使用
習題
1
答案是A,我當時選成了C,因爲我覺得用int型的x來初始化A類型的a,會造成類型不匹配。
但是a(x)的意義是調用了A的int構造函數
2
全局對象會在main函數之前進行初始化,並且在main函數結束之後再進行析構
3
因爲fuc2中返回的tmp對象其實已經被析構了,對象已經被銷燬,因此是運行錯誤的
返回引用不能返回臨時變量的引用
如果tem是全局的,應該是會返回4_7