C 友元關係

2021-10-02 12:45:09 字數 1811 閱讀 6045

在c++中,當基類a,給與屬性protected限定時,如果想訪問該屬性,除了繼承的子類外,可在a類中宣告b類為a的友元:(如13行)

friend class others;

友元類 friend+class名(不是物件)

使得友元類可以使用該類的

當a類中定義b為a的友元類,則類b可以使用a的方法和屬性

#include

class lovers

;class boyfriend : public lovers

;class girlfriend : public lovers

;class others

;lovers:

:lovers

(std:

:string thename)

void lovers:

:kiss

(lovers *lover)

void lovers:

:ask

(lovers *lover,std:

:string something)

boyfriend:

:boyfriend

(std:

:string thename)

:lovers

(thename)

girlfriend:

:girlfriend

(std:

:string thename)

:lovers

(thename)

others:

:others

(std:

:string thename)

void others:

:kiss

(lovers *lover)

intmain()

執行結果:

b妞親親我們的家a君

寶貝兒a君幫我洗衣服啦

噹噹噹噹!路人甲上場

路人甲親一下b妞

友元函式 friend +函式,宣告為a的友元函式

則在該函式內部,可以訪問類a的私有成員

過載「<<」與+運算子為非成員函式

complex.**件

#ifndef  _complex_h

#define _complex_h

#include

using

namespace std;

class

complex

complex

(float a,

float b)

friend complex operator+(

const complex &c,

const complex &d)

;friend ostream &

operator

<<

(ostream & out,complex &c )

;private

:float real;

float imag;};

#endif

// _complex_h

main.cpp

#include

"complex.h"

complex operator+(

const complex &c,

const complex &d)

ostream &

operator

<<

(ostream &out,complex & x)

intmain()

C 友元關係

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

C 友元關係

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

c 友元關係與繼承

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