syne

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先引用&是别名,(int &a = b;)a是b的别名,实际上还是b,类型也是int(&);

对于引用的操作实际上是作用在引用所引的对象上面,在许多函数中,通过使用引形参来改变一个或多个实参的值。

为什么要用引用呢?例如在包含string类的函数中,传递的string形参一般写作 const std ::string&a,而不是直接使用std::string a或者const std::string a呢?

  原因是:使用引用可以避免拷贝,使用const能保护数据。

  拷贝大的类类型对象或者容器对象会比较低效,甚至有点类类型(包括 IO 类型在内)根本就不支持拷贝操作。当某种类型不支持拷贝操作时,函数只能通过引用形参访问该类型的对象。

  对于string类来说,string的对象可能会非常长,所以应该避免直接拷贝他们,这时候就要使用引用形参了。

  如果函数无需改变那引用形参的值,最好将其声明为常量引用。

 

-----c++ primer

 

posted on 2018-06-24 09:57  syne  阅读(3512)  评论(0)    收藏  举报