要想改变实参的值可以使用引用,因为引用类型的形参实际上就是实参的别名,当然能对实参进行操作了。

同时也可以通过指针来改变相应实参的值,但是使用引用会更加安全,更自然。

1.引用形参的作用不只是改变实参的值那么表明,还可以返回其他信息,任何你想返回的函数中的值,都可以通过定义

  引用形参来记录,从而传递到主调函数中。

2.const类型的引用形参,编写一个比较两个string对象的长度的函数,如果使用非引用的形参,则需要复制两个string对象,有时候string很长,这个

要复制string对象是很不合理的,因此需要使用引用。

   bool isshorter(const string &s1,const string &s2)

  {

       return s1.size()<s2.size();

  }

  之所以使用引用是为了提高效率,使用const是为了避免函数修改实参的值。这样既达到了非引用类型的效果,又避免了非引用类型的缺点。

如果使用引用形参的唯一目的是为了复制形参,则需要使用const类型的。

3.一个值得注意的东西;

  如果一个函数是void的类型的如void swap(int a,int b);当传递给他的是其他类型的值,如short ,float到形参时是没问题的。

  并且int swap(int a,int b)时传递给其short ,float值也是没问题的,但是在传递非形参类型的值时这个函数不能当右值。

   int x = swap(short,short);这样是不可以的,会出错的。

4.应该将不需要修改值的应用定义为const类型的,普通的非const类型的应用在使用时不太灵活,普通的非const的形参既不能使用字面值,也不能使用产生右值的表达式进行实参初始化。