1.const修飾成員函式
要宣告乙個const型別的成員函式,只需在成員函式後面加上關鍵字const,const修飾this指標所指向的物件;const修飾成員函式保證了呼叫該成員函式的物件在函式內不會被改變;在類體外定義成員函式也必須加上const。
class date
注意:
1)const物件只可以呼叫const成員函式,因為非const成員函式可能在內部改變了物件;
2)非const物件即可以呼叫const成員函式又可以呼叫const成員函式。
2.inline(內聯)
c++支援內聯函式的目的是提高程式執行效率,是一種以時間換空間的方法,省去了呼叫函式的額外開銷。
在函式定義前加上inline關鍵字,即可將函式指定為內聯函式,注意不是放在宣告前。
int
max(int a ,int b)//普通函式
inline int
max(int a ,int b)//內聯函式
在呼叫上面兩個函式時的區別是:
呼叫max函式時會進行形成棧幀、釋放棧幀、傳參等過程,而在呼叫內聯函式時,只需將函式部分展開,節省了空間,如下:
cout
cout
<<(a+b)優: 提高效能,增強**復用性;
缺:不做引數型別檢查,傳參時要小心;降低**執行效率;不便除錯,可維護性差。
內聯在使用是也要慎用:
內聯以**拷貝為代價,省去了函式呼叫的開銷,從而提高程式執行效率;在函式**過長時不宜使用內聯,因為會導致可執行**膨脹;若函式體內出現迴圈或其他複雜的控制結構不適合使用內聯,因為函式執行**的時間比函式呼叫開銷大。
3.友元
c++中友元函式用關鍵字friend說明,友元函式可以在類外訪問該類中的任何成員,這點和成員函式一樣。
class
date;
特點有:
1)友元函式不是類的成員函式,所以不需要用「::」說明屬於哪個類;
2)友元函式不可以直接訪問類的成員;
3)友元函式可通過物件訪問所有成員,私有和保護成員也一樣;
3)調用友元函式時,在引數中要指出訪問的物件;
4)類和類之間的友元關係不能繼承。
友元類:整個類可以是另乙個類的友元,友元類的每個成員函式都是另乙個類的友元函式,都可訪問另乙個類中的保護或私有資料成員。
class time ;
class date
4.static(類的靜態成員)
在類裡面用static修飾的成員稱為靜態成員,類的靜態成員是屬於整個類所有的,可通過類名和物件名直接訪問public靜態成員,靜態成員函式可直接訪問靜態成員變數。
靜態成員函式也是直接通過關鍵字static定義。
class test
靜態成員函式和普通成員函式的區別是:
類物件中的成員變數和成員函式是分開儲存的,普通成員變數儲存於物件中,成員函式儲存於**段中;靜態成員變數是儲存於資料段中。
靜態成員函式沒有隱含this指標引數,可使用型別::作用域訪問符直接呼叫靜態成員函式。
靜態成員函式不可以訪問非靜態成員,若要引用,得通過引數傳遞的方式得到物件名,然後再通過物件名引用;
非靜態成員函式可以訪問靜態成員。
C const 內聯 靜態成員 友元
在成員函式後面加const,const修飾this指標所指向的物件,保證這個const成員函式的物件在函式內不會被改變。注意點 operator 可以加const,operator 不可以加const 取位址運算子 無意義 以inline修飾的函式叫做內聯函式,編譯時編譯器會在呼叫內聯函式的地方展開...
const 內聯 友元
const 1,在成員函式後面加const,const修飾this指標所指向的物件,也就是保證呼叫這個const成員函式的物件在函式內不會被改變。time const t1 2017 1021 在t1的生命週期中,物件t1中的所有資料成員的值都不能被修改 2,如果乙個物件被宣告為常物件,則通過該物件...
友元函式,內聯函式
目錄 友元函式 為什麼要引入友元函式 什麼時候使用友元函式 怎麼使用友元函式 友元函式的分類 如下 內聯函式 為什麼要使用內聯函式 內斂函式定義格式 內聯函式注意事項 展示 有權訪問類的所有私有 private 成員和保護 protected 成員。儘管友元函式的原型有在類的定義中出現過,但是友元函...