3 友元函式和友元類

2021-10-20 18:38:55 字數 1249 閱讀 8996

一、友元(friend)

概念:通過友元,打破了類的封裝性,可以訪問類內的所有成員

分類:友元函式、友元類

二、友元函式

概念:友元函式是乙個普通函式,不屬於類,但需要在類內表明友元關係

友元函式可訪問類內所有成員,但類不可以訪問友元函式內部資料

格式

class

cperson

;void

setpersonage

(cperson& p,

int age)

// 函式在類外宣告和定義

intmain()

class

cperson};

void

setpersonage

(cperson& p,

int age);

intmain()

三、友元類

友元類的形式分為兩種 :

使整個類成為友元

使類中的某一部分函式成為友元

使整個類成為友元

classcb;

// 宣告類

classca;

class

cb;

使類中的某一部分函式成為友元

classcb;

// 宣告類

classca;

class

cb;

友元關係不可被繼承

四、友元特點

class

x// 友元函式在類內定義x(

)// 錯誤,f()函式在下面才宣告,此處檢測不到

voidg(

);voidh(

);};

void x::g(

)// 錯誤,此時f()函式還沒有被宣告

voidf(

);// 宣告函式

void x::h(

)// 正確,檢測到f()函式被宣告

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

友元 友元函式 友元類和友元成員函式 C

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...

C 友元 友元函式 友元類和友元成員函式

有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...