返回引用类型的返回引用的好处

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回引用类型的返回引用的好处相关的知识,希望对你有一定的参考价值。

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用*指针变量名的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

参考技术A   返回引用类型的返回引用的好处如下:
  (1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。
  (2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。
  (3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
  返回引用一般是用在c或者c++等高级语言上。

为什么赋值操作符函数的参数为const引用,返回值为引用

为什么赋值操作符函数的参数为const引用,返回值为引用

1、返回值类型

  返回类型一般声明为类型的引用,并在函数结尾时返回实例自身的引用(即*this)。这里主要有两个原因:
(1)返回引用可以减少一次拷贝构造和析构函数导致不必要的开销,因为返回值类型不是引用,会创建一个匿名对象,这个匿名对象时个右值,获取return的值。
(2)可以实现连续赋值
 在例子中
  b=c=a;
 返回值不是引用类型也是可以的,其运算顺序
  b=(c=a);
 c得到一个右值,再将右值赋给b,所以逻辑上没有问题的。但是如果是
  (b=c)=a;
 这里将会出错,b=c后b是一个右值,所以b=a时将会出错。

2、参数

  参数声明为const且是一个引用,原因如下:
(1)const 是因为赋值运算,不希望修改原来类的状态,同时可以接受const与非const的参数
(2)引用则避免了拷贝构造函数

 

——如有不对的地方,非常欢迎给予指导!

——【感谢】资料来源于http://www.cnblogs.com/kiplove/p/6783497.html

以上是关于返回引用类型的返回引用的好处的主要内容,如果未能解决你的问题,请参考以下文章

C++ 函数返回引用

C++ 通过常量引用传递和通过常量引用返回

为什么赋值操作符函数的参数为const引用,返回值为引用

为啥 lambda 函数默认会丢弃推导的返回类型引用?

c++ 函数返回引用问题

返回值或修改引用?