C++进阶—>friend

0.前言

friend友元,顾名思义是好朋友的意思,即我是你的好朋友,你所私有的东西会跟我分享,为我所用;通常分为友元函数和友元类。

1.友元函数

1)友元函数能够访问类中的私有变量;

2)友元函数可以定义在类中的任何位置,public、protected、private中均可;

3)友元函数为全局函数,在实现中无需加上类标识;

4)函数参数为类的对象,以便对类成员进行操作;

5)常用于对运算符或系统函数的重载。

说明:若要定义某个函数能够实现对某类变量操作,不管该函数是系统函数还是其他函数,均可通过在某类中使用friend关键字 定义友元函数,通过该友元函数可以实现对某类的操作,在友元函数的参数为类对象。

例子:

class AB
{
public:
	
	AB()
	{
		this->a=888;
		this->b=666;
	}

	AB(int a,int b)
	{
		this->a=a;
		this->b=b;
	}
	friend void modifya(AB &ab);
	//void modifyb(AB &ab);
	void Print()
	{
		cout<<a<<b<<endl;
	}
private:
	int a ;
	int b ;
};

void modifya(AB &ab)
{
	ab.a=88;
}

void main()
{
	AB aaa;
	modifya(aaa);
	aaa.modifyb(aaa);
	aaa.Print();

	system("pause");
	return;
}

2.友元类

1)若B类是A类的友员类,则B类的所有成员函数都是A类的友员函数;

2)友员类通常设计为一种对数据操作或类之间传递消息的辅助类;

3)友元类中需要定义类对象,如B类是A类的友员类,则B中要定义一个A的对象,以便对A进行操作。

例子:

class A
{
public:
	friend class B;//B类 是 A的好朋友 ,在B中可以访问A类的私有成员 私有函数
	//1 声明的位置 和 public private没有关系
	friend void modifyA(A *pA, int _a); //2 函数modifyA 是 类A的好朋友
	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");
}







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值