const 內聯 友元

2021-08-09 15:14:49 字數 2520 閱讀 6088

const

1,在成員函式後面加const, const修飾this指標所指向的物件, 也就是保證呼叫這個const成員函式的物件在函式內不會被改變。

time const t1(2017

1021);

//在t1的生命週期中,物件t1中的所有資料成員的值都不能被修改

2,如果乙個物件被宣告為常物件,則通過該物件只能呼叫它的常成員函式,而不能呼叫該物件的普通成員函式。

const time t1(2017,10,20);//定義常物件t1

t1.get_time();//非法,試圖呼叫常物件t1中的普通成員函式,

常資料成員只能通過建構函式的引數初始化表對常資料成員進行初始化,其他任何函式都不能對常資料成員賦值。

建構函式的初始化列表

初始化列表以乙個冒號開始, 接著乙個逗號分隔資料列表, 每個資料成員都放在乙個括號中進行初始化。

class time

private :

int _year ; // 年

int _month ; // 月

int _day ; // 日

常成員函式如果將成員函式宣告為常成員函式,則只能引用本類中的資料成員,而不能修改它們。

#include

using

namespace

std;

class date

;void test ()

常成員函式可以引用const資料成員,也可以引用非const 資料成員。

常成員函式不能呼叫另乙個非const成員函式。

內聯

以inline修飾的函式叫做內聯函式, 編譯時c++編譯器會呼叫內聯函式的地方展開, 沒有函式壓棧的開銷, 內聯函式提公升程式執行的效率。(相當於c語言中的巨集)

1. inline是一種以空間換時間的做法, 省去呼叫函式棧開銷。 所以**很長或者有迴圈/遞迴的的函式不適宜使用內聯。

2.inline對於編譯器而言只是乙個建議, 編譯器會自動優化, 如果定義為inline的函式體內有迴圈/遞迴等等, 編譯器優化時會忽略掉內聯。

3. inline必須函式定義放在一起, 才能成為內聯函式, 僅將inline放在宣告前是不起不作用的。

4. 定義在類內的成員函式預設定義為內聯函式。

eg:將 max 定義為內聯函式

inline int

max(int a, int b)

則呼叫: cout<

利弊分析:內聯機制既具備巨集**的效率,又增加了安全性,而且可以自由操作類的資料成員,函式被內聯後,編譯器可以通過上下文相關的優化技術對結果**執行深入優化。另一方面,如果執行函式體內的**時間比函式呼叫的開銷大得多,那麼inline效率收益會很小。

友元

friend的意思是朋友,中文多譯為友元,友元可以訪問與其有好友關係的類中的私有成員,友元包括友元函式和友元類。

友元函式:

在c++中友元函式允許在類外訪問該類中的任何成員, 就象成員函式一樣, 友元函式用關鍵字friend說明。

1. 友元函式不是類的成員函式。

2. 友元函式可以通過物件訪問所有成員, 私有和保護成員也一樣。

#include

using

namespace

std;

class time

;time::time(int hour,int minute,int second)//定義建構函式,分別給hour,minute,second賦初值

void display(time & t)

友元類:整個類可以是另乙個類的友元。 友元類的每個成員函式都是另乙個類的友元函式, 都可訪問另乙個類中的保護或私有資料成員。

1,友元的關係是單向的而不是雙向的。

2,友元的關係不能傳遞。

#include

using

namespace

std;

class time

;class date

;void test()

利弊分析:友元因為可以訪問其它類中的私有成員,所以它一定程度上對封裝原則是乙個小的破壞,但是它有助於資料共享,能提高程式的效率,在使用時,要注意它的***,在資料共享和資訊隱蔽之間選擇乙個恰當的平衡點。

靜態成員,內聯,友元,const成員函式

一.靜態成員 靜態成員分為靜態成員函式和靜態資料成員,是為了實現我們有時候希望有某乙個或者幾個資料成員為類所定義出來的物件所共有,從而實現乙個類多個物件之間的資料共享,如統計總數,平均值等。靜態資料成員 若類中的乙個資料成員被宣告為static,則這個成員為靜態資料成員,這個成員為這個類的所有物件所...

c const 內聯 友元 static

1.const修飾成員函式 要宣告乙個const型別的成員函式,只需在成員函式後面加上關鍵字const,const修飾this指標所指向的物件 const修飾成員函式保證了呼叫該成員函式的物件在函式內不會被改變 在類體外定義成員函式也必須加上const。class date注意 1 const物件只...

友元函式,內聯函式

目錄 友元函式 為什麼要引入友元函式 什麼時候使用友元函式 怎麼使用友元函式 友元函式的分類 如下 內聯函式 為什麼要使用內聯函式 內斂函式定義格式 內聯函式注意事項 展示 有權訪問類的所有私有 private 成員和保護 protected 成員。儘管友元函式的原型有在類的定義中出現過,但是友元函...