有些情形下,需要允許類的非成員函數訪問類的私有成員,同時阻止一般的訪問。友元便是在這樣的背景下引入。
友元可以是普通的非成員函數,或在該類之前定義的其他類的成員函數,或整個類。
#include<iostream>
using namespace std;
class B;
class A{
public:
int test(B b);
private:
int x;
};
class B{
friend class A;
public:
B(int i):value(i){}
private:
int value;
};
int A::test(B b){
return b.value;
}
int main(){
B b(5);
A a;
cout<<a.test(b);
return 0;
}