1、友元函式
實際上具體大概有下面兩種情況需要使用友元函式:
(1)運算子過載的某些場合需要使用友元。
(2)兩個類要共享資料的時候。
優點:能夠提高效率,表達簡單、清晰。
缺點:友元函式破環了封裝機制,盡量不使用友元函式。
友元是類的外部函式,所以內部沒有this指標;放在類的公有部分或者私有部分沒有任何區別
友元函式宣告:
在類中:
friend + 返回型別 函式名();
友元函式定義:
在類中定義或者在類外部定義
允許外面的類或函式去訪問類的私有變數和保護變數。
標頭檔案
#ifndef sta_h
#define sta_h
#include using namespace std;
#include class sta;
//函式宣告
void print(const sta &);
class visit
;class sta
;#endif // sta_h
//實現檔案
#include "sta.h"
#include sta::sta(qstring name,int age):
m_name(name),
m_age(age)
//全域性函式做類sta的友元函式
void print(const sta &s)
效果:
友元類:
如果類x為類y的友元類,那麼x的多有成員函式為類y的友元函式。
#ifndef sta_h
#define sta_h
#include using namespace std;
#include class sta;
//函式宣告
void print(const sta &);
class visit
;class sta
;#endif // sta_h
#include "sta.h"
#include sta::sta(qstring name,int age):
m_name(name),
m_age(age)
//全域性函式做類sta的友元函式
C C 友元函式和友元類
友元函式和友元類 採用類的機制後實現了資料的隱藏與封裝,類的資料成員一般定義為私有成員,成員函式一般定義為公有的,依此提供類與外界間的通訊介面。但是,有時需要定義一些函式,這些函式不是類的一部分,但又需要頻繁地訪問類的資料成員,這時可以將這些函式定義為該函式的友元函式。除了友元函式外,還有友元類,兩...
C C 友元函式和友元類
a 友元函式 class data 友元函式是可以直接訪問類的私有成員的非成員函式。它是定義在類外的普通函式,它不屬於任何類,但需要在類的定義中加以宣告,宣告時只需在友元的名稱前加上關鍵字friend,其格式如下 friend 型別 函式名 形式引數 1.友元函式的宣告可以放在類的私有部分,也可以放...
友元(友元函式 友元類 類成員函式的友元)
friend 友元機制 允許乙個類將對其非公有成員的訪問許可權授予指定的函式或者類。我們可以將友元大致分為3類 友元函式 是指某些雖然不是類的成員函式,但是能夠訪問這個類的所有成員的函式。比如我們下列的 include class test friend void show test rhs 宣告 ...