在c++中,類的成員訪問許可權有三種,private,protected,public。
private:類中的private成員只能夠在本類中或者友元訪問,子類或外界無法訪問私有成員。
protected:類中的protected成員只允許本類或者子類中訪問,外界無法訪問,(定義類時如果希望成員被子類繼承而外界不能訪問就可以定義為 protected成員)
public:類中public成員在本類、子類和外界中都能夠進行訪問。
請思考:為什麼private中的成員可以被友元訪問,什麼是友元?友元是如何實現的?
在某些情況下,我們需要允許特定的非成員函式訪問乙個類的私有成員,同時仍然阻止一般的訪問。這就是友元存在的使命。例如,被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。這些操作符不可能為類的成員。然而,儘管不是類的成員,它們仍是類的「介面的組成部分」。
而友元機制,允許乙個類將對其非公有成員的訪問權授予指定的函式或類。友元的宣告以關鍵字 friend 開始。它只能出現在類定義的內部。友元宣告可以出現在類中的任何地方:友元不是授予友元關係的那個類的成員,所以它們不受宣告出現部分的訪問控制影響。
下面給出c++中所有有關友元的結論和限制,然後後面針對每個細節給出示例:
1. 友元函式
ø 若b類是a類的友員類,則b類的所有成員函式都是a類的友員函式
ø 友員類通常設計為一種對資料操作或類之間傳遞訊息的輔助類
將類man宣告為類woman的友元類,使得可以通過類man物件訪問類woman的私有成員。
class
woman;
// 前向宣告
class
man
; class
woman
; void
man::disp(woman &w)
void
man::reset(woman &w)
C 回顧之友元
總的來說,友元分為兩類 友元函式與友元類。友元是針對類而言,它提供了一種非類的成員函式來訪問類的非公有成員的一種機制。可以把乙個函式指定為某類的友元,這個函式稱為這個類的友元函式。也可以將類a指定為類b的友元,則類a是類b的友元類,類a的所有成員函式均是類b的友元函式,均可以訪問類b的非公有成員。友...
C 之友元函式
類的友元.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace std class point 預設賦值建構函式,在建立物件時自動呼叫 int getx 隱藏有this指標,指向當前使用的物件,其實是return thi...
C 基礎之友元
友元函式 在本類中使用friend宣告外部的函式,則該外部函式就能訪問本類中的private protected成員。友元類 在本類中使用friend宣告外部的類,則該外部類就能訪問本類中private protected成員。友元關係沒有繼承性 b類是a類的友元,c類繼承a類,則b不能直接訪問c中...