友元函数:
声明:friend 返回类型 函数名(形参表)
{
......
//函数体
}
说明:
友元函数可以是另一个类的成员函数,也可以是不属于任何类的一般的函数。
友元是一个普通的函数,它不是本类的成员函数。
private、public、protected 访问权限与友元函数声明无关。
友元也可以是整个类。称为友元类。
格式:
class A {
...
friend class B;
};
若B类是A类的友元类,则B类中的所有成员函数都是A类的友元函数
友元类通常设计为一种对数据操作或类之间传递消息的辅助类 。
#include <iostream>
using namespace std;
class A
{
public:
friend class B;//声明B类是A的友元类,在B中可以访问A类中的私有成员
friend void modifyA(A *pA, int _a);//声明modifyA函数为友元函数
A(int a=0, int b=0)
{
this->a = a;
this->b = b;
}
int getA()
{
return this->a;
}
private:
int a;
int b;
};
void modifyA(A *pA,int _a)
{
//pA->a = 100;
pA->a = _a;
}
class B
{
public:
void Set(int a)
{
Aobject.a = a;
}
void printB()
{
cout << Aobject.a << endl;
}
private:
A Aobject;
};
void main()
{
B b1;
b1.Set(300);
b1.printB();
system("pause");<pre name="code" class="cpp">B b1;
b1.Set(300);
b1.printB();
system("pause");
int main332123()
{
A a1(1,2);
cout << a1.getA() << endl;
modifyA(&a1,300);
cout << a1.getA() << endl;
system("pause");
return 0;
}