一、友元(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開始,它只能出現在類定義的內部,友...