1. 程式人生 > >C++物件屬性與初始化規則

C++物件屬性與初始化規則

推薦使用初始化列表初始化

初始化列表我們不寫,但是編譯器依然會自動初始化一次

———》針對自定義型別

宣告和定義,宣告是告訴程式我要定義這個東西

定義是實際開闢空間,分配記憶體

初始化列表可以認為初始化列表是成員變數定義的地方。

必須放在初始化列表:

     常量,引用,沒有初始化的

必須要顯示的寫出建構函式的情況:

     const型別的成員變數(還必須在初始化列表)、引用(引用必須在定 義的時候初始化)、沒有預設建構函式的自定義型別的成員變數

     成員變數按照宣告的順序初始化,而不是按照初始化列表順序。

     const可以修飾函式,但是隻能修飾成員函式。修飾的是this指標指向的物件。

const在*之前修飾的都是指標指向的內容

const在*之後修飾的都是指標變數本身

如果成員函式不修改成員變數,可以const修飾

如果要修改,不能使用const修飾<display 例子>

作用域只能被縮小,不能被放大

成員函式:

     取地址運算子的過載。99%都不需要自己定義,系統預設的就可以。

行內函數

     在呼叫的地方展開,不會有棧楨開銷,是一種以空間換時間的做法,神去了函式呼叫的開銷。

     程式碼很長或者/遞迴的函式都不適合展開。

     inline對於編譯器而言只是一個建議,如果有遞迴或者迴圈,編譯器會忽略inline

     定義在類裡的成員函式會預設成為行內函數。一般而言(十幾行二十幾行都會被展開),和編譯器有關。

巨集函式也可以減少壓棧開銷,巨集常量增強程式碼的可維護性。

友元函式

     突破類的封裝限制。