通常對於普通函式來說,要訪問類的保護成員是不可能的,如果想這麼做那麼必須把類的成員都生命成為public,然而這做帶來的問題遍是任何外部函式都可以毫無約束的訪問它操作它,c++利用friend修飾符,可以讓一些你設定的函式能夠對這些保護資料進行操作,避免把類成員全部設定成public,最大限度的保護資料成員的安全。 友元能夠使得普通函式直接訪問類的保護資料,避免了類成員函式的頻繁呼叫,可以節約處理器開銷,提高程式的效率,但矛盾的是,即使是最大限度的保護,同樣也破壞了類的封裝特性,這即是友元的缺點,在現在cpu速度越來越快的今天我們並不推薦使用它,但它作為c++乙個必要的知識點,乙個完整的組成部分,我們還是需要討論一下的。 在類裡宣告乙個普通函式,在前面加上friend修飾,那麼這個函式就成了該類的友元,可以訪問該類的一切成員。 下面我們來看一段**,看看我們是如何利用友元來訪問類的一切成員的。
#include using namespace std;
class internet
friend void shown(internet &obj);//友元函式的宣告
public:
char name[20];
char address[20];
};
void shown(internet &obj)//函式定義,不能寫成,void internet::shown(internet &obj)
friend void shown(internet &obj,country &cn);//注意這裡
public:
char name[20];
char address[20];
};
class country
friend void shown(internet &obj,country &cn);//注意這裡
protected:
char cname[30];
};
void shown(internet &obj,country &cn)
{ cout<
C 友元詳解
在物件導向的程式設計中,類的封裝性使得我們使用類 物件 的成員資料時經常要通過類 物件 的成員函式。這對於類是一種保護。但在某些情況下,頻繁的成員函式呼叫使得效率嚴重受損。例如,定義矩陣類,並有兩個矩陣物件相乘,為了獲得矩陣中的元素值 私有成員 要頻繁呼叫取值函式 公有成員 怎樣可以提高效率?使用友...
C 友元函式和友元類詳解
我們已知道類具備封裝和資訊隱 藏的特性。只有類的成員函式才能訪問類的私有成員,程式中的其他函式是無法訪問私有成員的。非成員函式能夠訪問類中的公有成員,但是假如將資料成員都定義 為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某些成員函式多次呼叫時,由於引數傳遞,型別檢查和安全性...
C 友元類和友元函式詳解
私有成員只能在類的成員函式內部訪問,如果想在別處訪問物件的私有成員,只能通過類提供的介面 成員函式 間接地進行。這固然能夠帶來資料隱藏的好處,利於將來程式的擴充,但也會增加程式書寫的麻煩。c 是從結構化的c語言發展而來的,需要照顧結構化設計程式設計師的習慣,所以在對私有成員可訪問範圍的問題上不可限制...