類 友元函式 友元類

2021-09-26 13:31:40 字數 1555 閱讀 6064

友元函式不是當前類的成員函式,但它可以訪問該類所有的成員,包括私有成員、保護成員和公有成員。    

在類中宣告友元函式時,需在其函式名前加上關鍵字 friend。    

友元函式既可以是非成員函式也可以是另乙個類的成員函式

class date ;

date::date(int y, int m, int d)

void showdate1(date &d)

void showdate2(date &d)

int main()

(1) 友元函式不是成員函式,宣告可以放在公有部分、保護部分、私有部分,不受影響。

(2) 友元函式不是成員函式。因此,在類的外部定義友元函式時,不能像成員函式那樣,在函式名前加上「類名∷」

(3) 因為友元函式不是類的成員,所以它不能直接呼叫物件成員,它必須傳入

物件物件指標物件引用,來呼叫該物件的成員。

(4) 一對多,乙個函式可以是多個類的友元函式。當乙個函式需要訪問多個類時,友元函式非常有用。

class date; //對date類的提前引用宣告

class time

friend void showdate_time(date &d,time &t) ;

private:

int hour;

int minute;

int sec;

};class date

friend void showdate_time(date &d,time &t);

private:

int year;

int month;

int day;

};void showdate_time (date &d,time &t)

{cout《類time的成員函式為類date的友元函式,必須先定義類time

並且在宣告友元函式時,要加上成員函式所在類的類名,如:  friend void time::showdate_time(date &);

(1) 宣告了乙個類的友元函式,就可以用這個函式直接訪問該類的私有資料,從而提高了程式執行的效率。    

(2) 友元提供了不同類的成員函式之間、類的成員函式與一般函式之間進行資料共享的機制。尤其 當乙個函式需要訪問多個類時,友元函式非常有用。    

(3) 引入友元機制的另乙個原因是方便程式設計,在某些情況下,如運算子被過載時,需要用到友元函式。   

缺點:破壞了資料的隱蔽性類的封裝性,降低了程式的可維護性,這與物件導向的程式設計思想是背道而馳的。因此使用友元函式應謹慎。

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

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

友元函式 友元類

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

友元函式 友元類

1 友元函式不是成員函式,它是類的朋友,因此可以訪問類的全部成員 三種都可以 2 友元的宣告部位是任意的,定義可以在類外也可以在類內 3 友元的使用 乙個友元函式訪問兩個類的成員 兩邊都進行宣告,這樣函式就可以直接訪問兩個類的成員了 class vector class matrix 乙個類的成員函...