运算符重载学习小记

在学习运算符"<<"以及">>"重载的时候在自定义的Myclass里面看到这样一条header

friend ostream &operator<<(ostream &out, Myclass &classname);


对为什么唯独"<<"和">>"的运算符重载需要加上这个friend感到非常疑惑 

最后经过搜索引擎的帮助以及自己写了个验证程序确定 终于搞懂了


对于没有加上friend的运算符重载 运算符的左边必须是class的instance

也就是说 对于这样两个Myclass类的实例A, B

A = B + 1;

这条语句会用1来初始化一个Myclass的对象 然后根据重载函数operator+执行与B的相加操作

因此这条语句等价于 A = B.operator+(1);


回到一开始产生疑惑的地方

Myclass A;
cout << A;

<<运算符的左边实际上是cout, 也就是ostream类. 

为了实现上述代码的效果

需要加上friend让Myclass内部的私有变量可以被读取输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值