在說明什麼是友元之前,我們先說明一下為什麼需要友元與友元的缺點:
通常對於普通函式來說,要訪問類的保護成員是不可能的,如果想這麼做那麼必須把類的成員都生命成為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)
{ cout
<
<
中國軟體開發實驗室","www.***ev-lab.com/
歡迎您使用http://blogmove.cn提供的"部落格搬家"和"博文三窟"服務.
C 中的 友元函式 友元類
1.友元函式的簡單介紹 1.1為什麼要使用友元函式 在實現類之間資料共享時,減少系統開銷,提高效率。如果類a中的函式要訪問類b中的成員 例如 智慧型指標類的實現 那麼類a中該函式要是類b的友元函式。具體來說 為了 使其他類的成員函式直接訪問該類的私有變數。即 允許外面的類或函式去訪問類的私有變數和保...
C 中的友元函式和友元
在c 中類具有封裝的隱蔽性,由於語言特性,只有成員函式才能訪問私有成員,非成員函式只能訪問類中的公有成員,可是有時候我們需要非成員函式呼叫私有成員,這個時候要是將私有成員定義為公有的又會破壞c 的封裝,為了解決上述問題,我們提出了友元的概念 友元分為友元函式和友元類,友元函式就是非成員函式可是當我們...
C 中的友元函式和友元類
結合著類的特性和類中一般成員函式,我們可以這樣理解 類具有封裝和資訊隱藏的特性。只有類的成員函式才能訪問類的私有成員,程式中的其他函式是無法訪問私有成員的。非成員函式可以訪問類中的公有成員,但是如果將資料成員都定義為公有的,這又破壞了隱藏的特性。另外,應該看到在某些情況下,特別是在對某些成員函式多次...