友元函數是全局函數,其關鍵字爲friend,破換了封裝性,友元函數可以直接獲取和操作類的私有成員;
若F類爲A類的友元類,則F類的所有成員函數都是A類的友元函數,友元類通常設計爲一種對數據操作或類之間傳遞消息的輔助類。
#include<iostream>
using namespace std;class A
{
public:
A()
{
a = 100;
b = 200;
}
int getsa()
{
return this->a;
}
friend void seta(A *p,int a);
protected:
private:
int a;
int b;
};
void seta(A *p, int a)
{
p->a = a;
}
void main01()
{
A mya;
cout<<"mya.getsa()"<<mya.getsa()<<endl;
seta(&mya,300);
cout << "mya.getsa()" << mya.getsa() << endl;
system("pause");
}
class A1
{
friend class B1;//B1是A1的友元類
public:
void display()
{
cout << "x=" <<x<< endl;
}
private:
int x;
};
class B1
{
public:
void seta(int w)
{
Aobj.x = w;
}
void print()
{
cout << Aobj.x << endl;
}
protected:
private:
A1 Aobj;
};
void main()
{
B1 b1;
b1.seta(100);
b1.print();
system("pause");
}