使用引用参数的主要原因
- 程序员能够在函数中修改调用函数参数中的数据对象
- 通过传递引用而不是整个数据对象,可以提高程序的运行速度。尤其是当数据对象较大时,如结构和类对象。
对于使用传递的值而不作修改的函数:
- 如果数据对象较小,如内置数据类型或者小型结构,则按值传递。
- 如果数据对象是数组,则只能使用指针,并且将指针声明为指向const的指针。
- 如果数据对象较大,则使用const指针或者const引用,节省复制结构所需的时间和空间。
- 如果数据对象是类对象,则使用const引用。类设计的语义常常要求使用引用。这是C++增添引用这个特性的主要原因。
对于修改调用函数中数据的函数
- 如果数据对象是内置数据类型,则使用指针。
- 如果数据对象是数组,则只能使用指针。
- 如果数据对象是结构,则使用引用或者指针。
- 如果数据对象是类对象,则使用引用。
使用引用参数,应尽可能使用const
- 使用const可以避免无意中修改数据的编程错误。
- 使用const使得函数能够处理const和非const实参。否则将只能接收非const数据。
- 使用const引用使函数能够正确生成并使用临时变量。
继承的一个特征是,基类引用可以指向派生类对象,而无需进行强制类型转换。所以,在函数的引用参数设置时,可以定义一个接受基类引用作为参数的函数。调用函数时,可以将派生类对象作为实参。
将基类引用作为参数,编写函数中参数被用到的数据和特性,派生类必定全部都具有。所以派生类对象作为实参,只会使用或修改它从基类继承下来的特性。
而反过来,派生类有很多基类所不具有的特性,将基类对象作为实参,不能提供这些特性,函数无法正常运行。