友元函数是全局函数,其关键字为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");
}