C++重载=,+=等时候为什么要用返回引用

来源:百度知道 编辑:UC知道 时间:2024/06/17 20:59:55
我是想问为什么在重载=,+=等时候要用返回引用。。(我看到很多都是返回的引用).

以ostream为例,重载函数处理的参数是调用调重载运算符的左操作数,
比如 cout << a << b;// int a,b;
为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是系统托管的。如果不返回引用,后面对流的操作就是无效的了,因为你返回的只是某时流的一个拷备,以后对它的操作不会显示出来了。就像上面为什么我可以连用两次<<操作符?如果不是返回引用,第二次插入操作将会将b插入到那个临时的流对象,而将会显示的会是那个全局的流,所以就看不到b了。
就正如我们程序开始申请一个全局全量;
int g_INT;
有个函数会定时输出它的值。到处都可以操作它。如果一个函数操作它,而又希望它的返回也可以被操作。看一下下面两个原型吧。
int ADDG_INT();
int &ADDG_INT();
如果你对第一个函数的返回值进行操作,显示g_INT的函数会看到这个变化么?只有第二种才可以。

以ostream为例,重载函数处理的参数是调用调重载运算符的左操作数,
比如 cout << a << b;// int a,b;
为什么要返回引用,我说你仔细想一下就明白了,你的函数会修改你操作的流,而流是全局的,不是临时变量,是系统托管的。如果不返回引用,后面对流的操作就是无效的了,因为你返回的只是某时流的一个拷备,以后对它的操作不会显示出来了。就像上面为什么我可以连用两次<<操作符?如果不是返回引用,第二次插入操作将会将b插入到那个临时的流对象,而将会显示的会是那个全局的流,所以就看不到b了。
就正如我们程序开始申请一个全局全量;
int g_INT;
有个函数会定时输出它的值。到处都可以操作它。如果一个函数操作它,而又希望它的返回也可以被操作。看一下下面两个原型吧。
int ADDG_INT();
int &ADDG_INT();
如果你对第一个函数的返回值进行操作,显示g_INT的函数会看到这个变化么?只有第二种才可以!
够清楚了吧。