C++物件屬性與初始化規則
阿新 • • 發佈:2019-01-23
推薦使用初始化列表初始化
初始化列表我們不寫,但是編譯器依然會自動初始化一次
———》針對自定義型別
宣告和定義,宣告是告訴程式我要定義這個東西
定義是實際開闢空間,分配記憶體
初始化列表可以認為初始化列表是成員變數定義的地方。
必須放在初始化列表:
常量,引用,沒有初始化的
必須要顯示的寫出建構函式的情況:
const型別的成員變數(還必須在初始化列表)、引用(引用必須在定 義的時候初始化)、沒有預設建構函式的自定義型別的成員變數
成員變數按照宣告的順序初始化,而不是按照初始化列表順序。
const可以修飾函式,但是隻能修飾成員函式。修飾的是this指標指向的物件。
const在*之前修飾的都是指標指向的內容
const在*之後修飾的都是指標變數本身
如果成員函式不修改成員變數,可以const修飾
如果要修改,不能使用const修飾<display 例子>
作用域只能被縮小,不能被放大
成員函式:
取地址運算子的過載。99%都不需要自己定義,系統預設的就可以。
行內函數
在呼叫的地方展開,不會有棧楨開銷,是一種以空間換時間的做法,神去了函式呼叫的開銷。
程式碼很長或者/遞迴的函式都不適合展開。
inline對於編譯器而言只是一個建議,如果有遞迴或者迴圈,編譯器會忽略inline
定義在類裡的成員函式會預設成為行內函數。一般而言(十幾行二十幾行都會被展開),和編譯器有關。
巨集函式也可以減少壓棧開銷,巨集常量增強程式碼的可維護性。
友元函式
突破類的封裝限制。