C 友元關係

2021-07-09 11:27:19 字數 587 閱讀 3025

在封裝中c++類資料成員大多情況是private屬性;但是如果介面採用多引數實現肯定影響程式效率;然而這時候如果外界需要頻繁訪問這些私有成員,就不得不需要乙個既安全又理想的「後門」——友元關係;

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

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

友元成員函式:既然是成員函式,那麼肯定這個函式屬於某個類,對了就是因為這個函式是另外乙個類的成員函式,有時候因為我們想用乙個類通過乙個介面去訪問另外乙個類的資訊,然而這個資訊只能是被它授權的類才能訪問;那麼也需要用friend去實現;這個概念只是在宣告的時候稍有變化;

友元類:友元類宣告會將整個類說明成為另乙個類的友元關係;和之前兩種的區別是集體和個人的區別;友元類的所有成員函式都可以是另乙個類的友元函式;

值得注意的是友元關係是單向的,有點像我們戀愛中出現的單相思 o(∩_∩)o,單向關係就是說如果a被說明成b的友元關係,那麼只能說a是b的友元,並不代表b是a的友元;其次在多數情況下友元關係的函式都會訪問它被說明中類的成員,這時候應該將函式定義在類的後面。

C 友元關係

在c 中,當基類a,給與屬性protected限定時,如果想訪問該屬性,除了繼承的子類外,可在a類中宣告b類為a的友元 如13行 friend class others 友元類 friend class名 不是物件 使得友元類可以使用該類的 當a類中定義b為a的友元類,則類b可以使用a的方法和屬性 ...

C 友元關係

友元關係主要應用在類的一些保護機制訪問中,個人理解可以這樣比喻,假設類是乙個部門,它裡面有些服務所有人都可以使用,但是有些服務只能會員使用,有會員就要為會員辦一張會員卡,這裡的會員就相當於友元物件,而會員卡就是乙個宣告,對應c 為friend 其實從名字上我們也能理解肯定有種特別近的兩種關係。c 友...

c 友元關係與繼承

友元關係不能繼承。基類的友元對派生類的成員沒有特殊訪問許可權。如果基類被授予友元關係,則只有基類具有特殊訪問許可權,該基類的派生類不能訪問授予友元關係的類。class base frnd has no access to members in d1 class d1 public base clas...