1. 程式人生 > >友元關系

友元關系

ica c++ p s 註意 pad lin time otto 安全

在封裝中C++類數據成員大多情況是private屬性;可是假設接口採用多參數實現肯定影響程序效率。然而這時候假設外界須要頻繁訪問這些私有成員,就不得不須要一個既安全又理想的後門”——友元關系;

C++中提供三種友元關系的實現方式,友元函數、友元成員函數、友元類。

友元函數:既將一個普通的函數在一個類中說明為一個friend屬性。其定義(大多數會訪問該類的成員)應在類後;

友元成員函數:既然是成員函數,那麽肯定這個函數屬於某個類,對了就是由於這個函數是另外一個類的成員函數。有時候由於我們想用一個類通過一個接口去訪問另外一個類的信息,然而這個信息僅僅能是被它授權的類才幹訪問;那麽也須要用friend

去實現。這個概念僅僅是在聲明的時候稍有變化。

友元類:友元類聲明會將整個類說明成為還有一個類的友元關系;和之前兩種的差別是集體和個人的差別。友元類的全部成員函數都能夠是還有一個類的友元函數;

值得註意的是友元關系是單向的,有點像我們戀愛中出現的單相思 O(∩_∩)O,單向關系就是說假設A被說明成B的友元關系,那麽僅僅能說AB的友元。並不代表BA的友元;其次在多數情況下友元關系的函數都會訪問它被說明中類的成員,這時候應該將函數定義在類的後面;

友元關系