关于 string& 形参

首先引用&是别名,(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

猜你喜欢

转载自www.cnblogs.com/syne-cllf/p/9219695.html