C 之友元函式和友元類

2021-08-09 04:01:38 字數 819 閱讀 2017

一、友元函式和友元類

1.1為什麼要使用友元函式

在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員(例如:智慧型指標類的實現),那麼類a中該函式要是類b的友元函式。具體來說:為了

使其他類的成員函式直接訪問該類的私有變數。即:允許外面的類或函式去訪問類的私有變數和保護變數,從而使兩個類共享同一函式。

實際上具體大概有下面兩種情況需要使用友元函式:(1)運算子過載的某些場合需要使用友元。(2)兩個類要共享資料的時候。

1.2特點

友元函式在類中只有宣告,沒有實現,友元函式不是類的內部函式,是乙個全域性函式

友元函式的宣告

不受類的訪問控制

限制,可以放在類內部的任意位置

友元函式破壞了類的封裝性

1.3宣告

friend 用來宣告 友元函式:可以訪問類的私有成員變數

友元類

friend也可以用來宣告友元類

友元類中所有函式都是該類的友元函式

友員類通常設計為一種對資料操作或類之間傳遞訊息的輔助類

#include class test2_2;

class test2_1

void print()

private:

int a;

};class test2_2

private:

int a;

};void printa(test2_1 &obj)

int main2_1()

c 之友元函式和友元類

友元函式提供了不同類的成員函式之間 類的成員函式與一般函式之間進行資料共享的機制。通過友元,乙個不同函式或另乙個類中的成員函式可以訪問類中的私有成員和保護成員。友元函式 友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外部的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需...

友元 友元函式 友元類和友元成員函式 C

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

友元 友元函式 友元類和友元成員函式 C

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