标签:
1.引用是已经定义变量的别名。必须在申明引用的时候进行初始化。引用更接近于const指针,一旦和某个变脸关联起来就一直效忠于它,不能改变(可以通过初始化来设置引用,但是不能通过赋值来设置)。
2.传引用传递引用和值不同的一点就是,在函数中,传值得话,在函数内部还会创建一个临时的变量,但是传应用的话就不会,因为引用和需要传进来值就是同一份值。
3.和传址的区别,除了他们在函数中申明的方式不一样,就是传址后在函数中会用到多次的解除引用*运算符。
4.引用的属性:如果程序员的意图是让函数使用传递给它的信息,而不是对这些信息进行修改,同时又想使用引用,那就使用常量引用,
5.临时变量,引用参数和const:如果实参和引用参数不匹配,c++将生成临时变量。当且仅当参数为const引用的时候c++才允许这样做。编译器将在下面两种情况下生成临时变量:a.实参的类型是对的,但是不是左值。b.实参的类型不正确但是可以转化成正确的类型.临时变量只在函数的调用期存在,此后编译器便把它随意的删除(具体详细原因,参考c++PrimerPlus 291页有关const的详解)。
6.尽可能使用const
a.使用const可以避免无意中修改数据的编程错误
b.使用const使函数能够处理const和非const的实参,否者只能接受非const的数据。
c.const能让函数正确生成并使用临时变量
何时使用引用参数:
使用引用参数的主要原因有两个
1.能够修改调用i的函数中的数据对象
2.通过传递引用而不是整个数据对象,可以提高程序运行的速度
但数据对象较大时(结构和类),第二个原因很重要。这些也是使用指针参数的原因。这是有道理的,因为引用参数实际上是机遇指针的代码的另一个接口。那么什么时候应该使用引用,什么时候该使用指针呢?什么时候该使用传值呢?原则如下:
如果对象数据很小,如内置数据类型或小型结构,则按值传递。
如果数据对象是数组,就用用指针,这是唯一的选择,并将指针申明为指向const的指针。
入股数据对象是较大的结构,就是用const指针或者const引用,以提高程序的效率。这样可以节省复制构造所需要的时间和空间。
如果数据对象是类对象,则使用cosnt引用。类设计的语义常常要求使用引用,实则是c++的新增这项特性的主要原因,因此传递类对象参数的标准方式是按引用传递。
对于修改调用调用函数中的数据的函数:
如果数据对象是内置类型,则使用指针。如果看到诸如fixit(&x)这样的代码(其中x是int),则很明显,该函数将修改x
如果数据对象数数组,则只能用指针。
如果数据对象是结构,则使用引用或者指针。
如果数据对象是类对象,则使用引用(参考c++primerplus)
标签:
原文地址:http://www.cnblogs.com/MrZHj/p/4421939.html