友元函式 友元類

2021-10-07 19:33:50 字數 1197 閱讀 2780

友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下:friend 型別 函式名(形式引數);友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。友元函式的呼叫與一般函式的呼叫方式和原理一致。

class date

private:

int _year;

int _month;

int _day;

};//在類體外定義

void printdate(date d)

int main()

友元函式須注意:

友元類的所有成員函式都是另乙個類的友元函式,都可以訪問另乙個類中的隱藏資訊(包括私有成員和保護成員)。當希望乙個類可以訪問另乙個類的私有成員時,可以將該類宣告為另一類的友元類。定義友元類的語句格式如下:

friend class 類名;

其中:friend和class是關鍵字,類名必須是程式中的乙個已定義過的類。

//以下語句說明類b是類a的友元類:

class a

;

經過以上說明後,類b的所有成員函式都是類a的友元函式,能訪問類a的私有成員和保護成員。

//友元類

class date; // 因為data類定義在time類後面,所以得先宣告data類

class time

private:

int _hour;

int _minute;

int _second;

};class date

void setdate(int hour)

private:

int _year;

int _month;

int _day;

time t;

};int main()

使用友元類時注意:

友元能夠使得普通函式直接訪問類的保護資料,避免了類成員函式的頻繁呼叫,可以節約處理器開銷,提高程式的效率,但所矛盾的是,即使是最大限度大保護,同樣也破壞了類的封裝特性,這即是友元的缺點。

友元(友元函式 友元類 類成員函式的友元)

friend 友元機制 允許乙個類將對其非公有成員的訪問許可權授予指定的函式或者類。我們可以將友元大致分為3類 友元函式 是指某些雖然不是類的成員函式,但是能夠訪問這個類的所有成員的函式。比如我們下列的 include class test friend void show test rhs 宣告 ...

友元函式 友元類 友元成員

友元 友元函式 友元類和友元成員函式 c 有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以fr...

友元函式 友元類

friend class 1 友元函式 2 友元類 友元函式與友元類。c 中以關鍵字friend宣告友元關係。友元可以訪問與其有friend關係的 類中的私有成員。友元包括友元函式和友元類。1 友元函式 如果在本類以外的其它地方定義了乙個函式 這個函式可以是不屬於任何類的非成員函式,也可以是其它類的...