友元函数是在类外面定义一个全局函数,并在类内声明成友元函数,这样在这个函数里面就可以修改类内的私有属性。
#include "iostream"
using namespace std;
class A
{
public :
//1、声明位置和public和private的位置无关friend void modifyA(A *pa, int _a);//此处声明
modifyA是类A的友元函数//friend void modifyA(A &pa, int _a);此处不声明成指针,声明成引用也行A(int a, int b)
{
this->a = a;
this->b = b;
}
int Geta()
{
return this->a;
}
private:
int a;
int b;
};
void modifyA(A* pa,int _a)
// void modifyA(A &pa, int _a );{
pa->a = _a;//若
modifyA 不是类A的友元函数,这儿是不能调用私有属性a的//pa.a = _a;}
void main()
{
A a1(1,2);
cout << a1.Geta() << endl;
modifyA(&a1, 300);
// modifyA(a1, 300);
cout << a1.Geta() << endl;
system("pause");
}
友元类:若C类是B类的友元类,则B类的所有成员函数都是B类的友元函数
友元类通常设计为一种对数据操作或类之间传递消息的辅助类
#include"iostream"
using namespace std;
class B
{
friend class C;//C是B的友元类
public:
void display()
{
cout << this->a << endl;
}
private:
int a;
};
class C
{
public:
void Set(int i)
{
Bobject.a = i;
}
void Display()
{
Bobject.display();
}
private:
B Bobject;//C中有个B,C是B的子属性
};
void main()
{
C c1;
c1.Set(100);
c1.Display();
system("pause");
}