代码改变世界

C++开发系列-友元函数 友元类

2018-06-01 11:12  iCoderHong  阅读(145)  评论(0编辑  收藏  举报

友元函数

默认一个类的私有属性只能在该类的内部可以直接访问。友元函数申明在内的内部,实现在类的外部可以直接访问类的私有属性。

class A1
{
public:
	A1()
	{
		a1 = 100;
		a2 = 200;
	}
	int getA1()
	{
		return this->a1;
	}
	//声明一个友元函数
	friend void setA1(A1 *p, int a1); //这个函数是这个类的好朋友
	
protected:
private:
	int a1;
	int a2;
};

void setA1(A1 *p, int a1)
{
	p->a1 = a1;
}
void main()
{
	A1 mya1;
	cout<<mya1.getA1()<<endl; 
	setA1(&mya1, 300); //通过友元函数 修改A类的私有属性
	cout<<mya1.getA1()<<endl;

	system("pause");
}

补充:

  • 友元函数声明语句位置与private、public无关。
  • 友元函数通常有个参数为该对象的参数,通过对象参数访问私有成员属性数据

友元类

  • 若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数
  • 友员类通常设计为一种对数据操作或类之间传递消息的辅助类