#include <iostream>
using namespace std;
class myClass1
{
public :
myClass1():n(0){};
void setn(int tmpn){this->n=tmpn;}
void show(){cout<<n<<endl;}
private:
//友元類
friend class myClass2;
//使用友元函數來改變myclass1中成員變量n的值
friend void setnF1(myClass1 & tmpClass,int tmpn);
int n;
};
class myClass2
{
public:
//使用友元類中的成員函數來改變myclass1中成員變量n的值
void setnF2(myClass1 & tmpClass,int tmpn){tmpClass.n=tmpn;}
};
void setnF1(myClass1 & tmpClass,int tmpn)
{
tmpClass.n=tmpn;
}
int main()
{
myClass1 p1;
myClass2 p2;
cout<<"p1的成員變量n預設為:"<<endl;
p1.show();
cout<<"使用myClass1自己的成員函數設定後:"<<endl;
p1.setn(100);
p1.show();
cout<<"使用友元函數設定後:"<<endl;
setnF1(p1,101);
p1.show();
cout<<"使用友元類設定後:"<<endl;
p2.setnF2(p1,102);
p1.show();
return 0;
}
執行結果:(點選圖檔可放大)