C++對象屬性與初始化規則

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

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

———》針對自定義類型

聲明和定義,聲明是告訴程序我要定義這個東西

定義是實際開闢空間,分配內存

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

 

必須放在初始化列表:

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

 

必須要顯示的寫出構造函數的情況:

     const類型的成員變量(還必須在初始化列表)、引用(引用必須在定 義的時候初始化)、沒有缺省構造函數的自定義類型的成員變量

 

     成員變量按照聲明的順序初始化,而不是按照初始化列表順序。

     const可以修飾函數,但是隻能修飾成員函數。修飾的是this指針指向的對象。

 

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

const在*之後修飾的都是指針變量本身

 

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

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

 

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


成員函數:

     取地址運算符的重載。99%都不需要自己定義,系統默認的就可以。

 


內聯函數

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

     代碼很長或者/遞歸的函數都不適合展開。

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

     定義在類裏的成員函數會默認成爲內聯函數。一般而言(十幾行二十幾行都會被展開),和編譯器有關。

宏函數也可以減少壓棧開銷,宏常量增強代碼的可維護性。


友元函數

     突破類的封裝限制。

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