C C 友元函式以及友元類的使用總結

2021-06-23 04:19:31 字數 1496 閱讀 6946

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 宣告 ...