C 友元關係

2021-10-04 12:12:17 字數 535 閱讀 3233

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

c++ 友元關係有三種分類:

友元函式、友元成員函式、友元類

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

友元成員函式:友元函式屬於某個類,就是在某個類中友元乙個函式,但是這個函式是另外乙個類中,所以在宣告友元的時候還需要加乙個類的宣告有時候因為我們想用乙個類通過乙個介面去訪問另外乙個類的資訊,然而這個資訊只能是被它授權的類才能訪問;那麼也需要用友元去實現;

友元類:友元類宣告會將整個類說明成為另乙個類的友元關係;

值得注意的是一般情況下友元關係是單向的,也就是說a可以是b的友元但b不可以是a的友元,類似戀愛中的單相思。。。。。。

**沒有。。。

C 友元關係

在封裝中c 類資料成員大多情況是private屬性 但是如果介面採用多引數實現肯定影響程式效率 然而這時候如果外界需要頻繁訪問這些私有成員,就不得不需要乙個既安全又理想的 後門 友元關係 c 中提供三種友元關係的實現方式,友元函式 友元成員函式 友元類。友元函式 既將乙個普通的函式在乙個類中說明為乙...

C 友元關係

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

c 友元關係與繼承

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