【oop】【4】創建與銷燬

構造函數

構造函數沒有返回值類型,函數名和類名相同,而且可以重載,使用不同的函數參數進行對象初始化。

初始化列表

在這裏插入圖片描述

初始化列表的初始化順序

調用其他的構造函數“委派構造函數”

在這裏插入圖片描述

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章