這篇部落格主要根據const修飾成員函式,內聯,友元函式以及靜態成員這四個方向說明。
在以前的學習中我們學習了const修飾指標,修飾指標指向的變數,const修飾變數以及const修飾函式返回值等,這一次我們學習const修飾成員函式。
首先const放在函式後面:void fun()const
這樣表示const修飾的是this指標所指向的物件,它不可改變。
void fun()const == void fun(const a* this)
以inline修飾的函式叫做內聯函式,編譯時c++編譯器會呼叫內聯函式的地方展開,沒有 函式壓棧的開銷,內聯函式提公升程式執行的效率。
inline是一種以空間換時間的做法,省去呼叫函式額開銷。所以**很長或者有迴圈/遞迴的的函式不適宜使用內聯。
inline對於編譯器而言只是乙個建議,編譯器會自動優化,如果定義為inline的函式體內有迴圈/遞迴等等,編譯器優化時會忽略掉 內聯。
inline必須函式定義放在一起,才能成為內聯函式,僅將inline放在宣告前是不起不作用的。
定義在類內的成員函式預設定義為內聯函式。
在c++中我們一邊用const enum inline替代#define
相比較下,巨集的優點:
增強**的復用性。
提高效能。
巨集也有很多缺點:
不方便除錯巨集。(因為預編譯階段進行了替換)
導致**可讀性差,可維護性差,容易誤用。
沒有型別安全的檢查。
有的時候我們需要在乙個類中使用另乙個類的成員函式,這個時候我們可以用關鍵字friend將類宣告為友元類,需要注意的是友元類是單向的,我是你的友元類所以我可以用你的成員函式,可是你要不是我的友元依舊不能使用。
需要注意的是友元類一定程度上破壞了c ++的封裝性,所以不宜多用。
類裡面static修飾的成員,成為靜態類成員。
類的靜態成員是該型別的所有物件物件所共享。
物件和類(二) this 指標
當你進入乙個房子後,你可以看見桌子 椅子 地板等,但是房子你是看不到全貌了。對於乙個類的例項來說,你可以看到它的成員函式 成員變數,但是例項本身呢?this 是乙個指標,它時時刻刻指向你這個例項本身。this只能在成員函式中使用,this在成員函式的開始前構造的,在成員的結束後清除。前面我們所學的成...
C 類和物件(二)
類和物件 類的物件如何引用私有資料成員 1 通過公有函式為私有成員賦值 class test void printxy void void main void 2 利用指標訪問私有資料成員 class test void getxy int px,int py 提取x,y值 void printxy...
C 類和物件(二)
隱含的this指標 1 每個成員函式都有乙個指標形參,它的名字是固定的,稱為this指標,this指標是隱式的。建構函式比較特殊,沒有這個隱含this形參 2 編譯器會對成員函式進行處理,在物件呼叫成員函式時,物件位址作實參傳遞給成員函式的第乙個形參this指標。3 this指標是成員函式隱含指標形...