C++初阶Day14

友元

1.关键字:friend
友元分为:友元函数、友元类
2.定义:
在类内声明 :

friend  函数名(参数);
friend  类名;

3.作用:
声明为友元的函数/类(不是类的成员函数/内部类)可以访问该类的私有、保护成员
4.问题:
现在我们尝试去重载operator<<,然后发现按使用习惯我们没办法将operator<<重载成成员函数。因为cout的输出流对象和隐含的this指针在抢占第一个参数的位置。this指针默认是第一个参数也就是左操作数了。但是实际使用中cout需要是第一个形参对象,才能正常使用。所以我们要将operator<<重载成全局函数。但是这样的话,又会导致类外没办法访问成员,那么这里就需要友元来解决。operator>>同理。可以重载成成员函数,但不符合使用习惯,如下图:
在这里插入图片描述

5.友元函数性质:
不能用const修饰,const修饰的是this,友元函数不是成员函数没有隐含的this;友元函数可以在类定义的任何地方声明,不受类访问限定符限制;一个函数可以是多个类的友元函数;友元函数的调用与普通函数的调用和原理相同
6.友元类性质:
单向,不具交换性;不具传递性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值