重载流运算符<<中遇到的问题

1.为什么重载函数的参数顺序不可变:

由测试函数可知,将Sum()的函数名替换为operator+就是运算符的重载,第一个运算数通过this指针隐式调用,a+b实质上是
a.operator+(b),要注意的是,形参使用的是运算数的引用传递,使用const,避免修改数据,节约值传递的时间,但是返回值不能使用引用传递,对局部变量使用引用传递,变量生命结束后,找不到他的值。


2.为什么要使用ostream的引用类型:

使用void返回会带来一个问题,<<要求左边是ostream类型的对象,上面代码中的友元会使下面语句出错,不能连续输出。

返回值为os的引用,仍为ostream类型的对象。而&为operator<<的🤣🤣🤣

注意:

1、由于输入、输出运算符是可以连续调用的,因此返回值应该还是cin或者cout,所以返回ostream\istream的引用

2、由于输入、输出运算符的调用者是左边的cin、cout,我们无法在它们的类内ostream、istream内添加运算符函数,因此只能实现成全局的运算符函数

posted @ 2022-09-17 20:00  这就叫做C++  阅读(34)  评论(0编辑  收藏  举报