在C++中,进行运算符重载时,为什么好多函数都要用到返回的是一个引用类型呢?

如题所述

要看它重载的运算符操作完之后需要一个什么结果,如果你是重载赋值运算符或者<<运算符,你最好返回一个引用,因为这样就能做出形如cout<< " " << " "这样的“拼接”。
如果是加法或者减法就没必要返回引用了,因为这些运算符一般不允许改变传入的参数或者调用它的对象,所以不能返回一个引用。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-01-05
最常用的重载都是重载<< 或者 >> 运算符,从而需要istream 或者 ostream
但是,这两个是没有拷贝构造函数的(应该说是私有拷贝构造函数),所以它们
只能返回一个引用。当然,其他有拷贝构造函数的也可以不用引用,不过那样
需要拷贝来拷贝去,性能大打折扣,所以大多都是传递引用,直接对源对象进行
更改,当然,只读的可以加上const 引用。本回答被提问者和网友采纳
第2个回答  2012-12-15
引用相当于别名,也就是小名。也就是说还是他本身。
而指针只是地址。
指针可以指向空(NULL),而引用一定不能空。
我感觉,引用更安全些。
第3个回答  2012-12-15
省时,省力,又省心

c++中重载输出操作符,为什么要返回引用
1.第一个形参为对ostream对象的引用,在该对象上将产生输出,ostream为非const,因为写入到流会改变流的状态;该形参是一个引用,因为不能复制ostream对象(在c++中定义的标准输入输出流类istream和ostream,其中拷贝构造函数和赋值操作符函数都被放置在了private部分,且只有声明,没有定义)。2.第二个形...

C++运算符重载,+-*\/的重载,返回值为什么是对象而不是对象的引用?而流操...
分析不能用引用的原因: 函数传入了两个参数a,b,并且+只能传入两个参数(c++不允许自己创造运算符),这样就限定了和sum不能作为参数传入,所以sum只能是一个函数里的临时变量,但是临时变量在函数结束时是要销毁的,那么函数调用玩,sum就没有了, 如果返回引用,引用源都已经没有了,还怎么引用,...

C++ 为了实现链式赋值 a=b=c;为什么需要符号重载函数返回引用
引用&符号的用意都是为了绑定不同的”变量“,使它们指向同一块内存地址,从而保证操作的一致性,即对任何一个被绑定的变量作处理,那么被绑到同一块地址的另外一个变量也就进行了相同的处理。同时,也能避免重复开辟新的内存空间,减少资源的消耗。比如你要重载 +=操作符,定义如下 class YourClass{ ...

C++中运算符重载问题,分别说明下面const的作用以及为什么要用引用
\/\/我们可以把fun2()看作成一个变量,即指针本身不可变。一般情况下,函数的返回值为某个对象时,如果将其声明为const时,多用于操作符的重载。通常,不建议用const修饰函数的返回值类型为某个对象或对某个对象引用的情况。原因如下:如果返回值为某个对象为const(const A test = A 实例)或某个对...

为什么c++ 重载输出运算符的时候要取地址 ostream &operator<<?
&不表示取地址,而表示引用。由于ostream对象不可复制,因此无论是作为参数传入,还是作为返回值传出,都必须使用引用形式。即ostream& operator<<(ostream&, MyClass)的定义方式是正确的,而ostream operator<<(ostream, MyClass)的定义方式是错误的。

c++关于运算符重载的问题
](int i);\/\/请说明此行的&是什么作用 函数的声明,防止在没有定义函数实体之前,被早先调用致使编译错误 2 char &charArray::operator[](int i)\/\/&是什么用,去掉会出错 返回的是一个char 型的变量,去掉的话返回的是char型的值。前者可以作为变量对它进行赋值。后者只是一个char型的值而已 ...

c++ 运算符重载 return *this是什么意思?
记住:重载的运算符是一个函数,他只是一个普通的函数,只是他的函数名称比较特别,比如 A operator +(A m) {...}假设A是一个类,那么这个重载的加操作符,其函数名称就是operator +,函数的反回类型是A,参数是A m。因此C++运算符重载反回的是什么,要根据反回类型来决定的,不是都一味的反...

C++中为什么重载前置++运算符要加个&?
1、因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。举个例:cout<<是经常用的,其实是重载了<<这个操作符。如果不返回引用,cout<<a<<b<<endl; 就不可以一起写了。如果返回自身的引用 cout<

重载详细解读
函数重载是C++中一种重要的特性,允许使用相同的函数名称处理不同类型的输入。以下是重载的一些关键要点:1. 函数名相同是重载的基础,返回值可以各异,但特征标志(如参数类型、数量和const性)必须不同。编译器首先依据函数名识别候选函数,然后根据特征标志选择最适合的函数。2. 在匹配函数时,编译器不...

C++里面,为什么重载前++时不返回引用就不能连用?
这只是一个约定,它告诉编译器递增运算符正在后缀模式下被重载。第二个区别是使用临时局部变量 temp 来获取递增之前对象的值。该值将被保存并在稍后由函数返回。返回引用才可以连用,因为引用&能使返回对象为左值,左值是分配地址的可以连续使用。如果不返回引用就是返回值为右值,不可以连续运算 ...

相似回答