在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...