友元分為:友元函式和友元類
友元提供了一種突破封裝的方式,有時提供了便利。但是友元會增加耦合度,破壞了封裝。
友元函式可以直接訪問類的私有成員,它是定義在類外部的普通函式,不屬於任何類,但需要在類的內部聲
明,宣告時需要加friend關鍵字。
class
date
private
:int _year;
int _month;
int _day;};
ostream&
operator
<<
(ostream& _cout,
const date& d)
istream&
operator
>>
(istream& _cin, date& d)
intmain()
1.友元函式可訪問類的私有和保護成員,但不是類的成員函式
2.友元函式不能用const修飾
3.友元函式可以在類定義的任何地方宣告,不受類訪問限定符限制
4.乙個函式可以是多個類的友元函式
5.友元函式的呼叫與普通函式的呼叫和原理相同
友元類的所有成員函式都可以是另乙個類的友元函式,都可以訪問另乙個類中的非公有成員。
友元關係是單向的,不具有交換性。
友元關係不能傳遞->如果b是a的友元,c是b的友元,則不能說明c時a的友元。
class
date
;// 前置宣告
class
time
private
:int _hour;
int _minute;
int _second;};
class
date
void
settimeofdate
(int hour,
int minute,
int second)
private
:int _year;
int _month;
int _day;
time _t;
};
C 成員許可權及友元介紹
對於c 類,可以定義三種不同訪問控制許可權的成員。這三種分別是public公有型別,private私有型別,protected保護型別。友元介紹 類可以允許其他函式或者類訪問它的非公有成員,方法是令其成為友元 class count friend void fn1 count obj 宣告友元函式 ...
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...