程序设计中的引用指语法对象表意的一种形式,可以简单理解为在表达式中使用语法对象。例如,C++中的变量必须在声明/定义后才能被引用,这里“引用”就是这个意思。C++的引用也是一种类型。定义引用类型的对象可以用来传递参数(引用传递的参数相当于Pascal中的变参,而非引用的参数称为值参)。例如void foo(type& a);,通过type类型的引用类型type&传递了数据对象a。使用引用的好处是传 展开
程序设计中的引用指语法对象表意的一种形式,可以简单理解为在表达式中使用语法对象。例如,C++中的变量必须在声明/定义后才能被引用,这里“引用”就是这个意思。C++的引用也是一种类型。定义引用类型的对象可以用来传递参数(引用传递的参数相当于Pascal中的变参,而非引用的参数称为值参)。例如void foo(type& a);,通过type类型的引用类型type&传递了数据对象a。使用引用的好处是传递参数时不用传递整个对象——如果sizeof(type)很大的话,用void foo(type a)来传递参数时复制对象a所需要的时间就很长,消耗的栈空间也大;而引用可以避免这种开销。此外引用本身具有确定的类型且无法转换,这种特性在强类型语言中有助于维护类型安全性。相比之下,指针可以进行强制类型转化,在使用者不完全清楚内部代码时不经意使用可能会造成致命错误(例如导致程序崩溃)。另外,传递指针的代码写起来也比使用指针简洁。附注:通常编译器的实现一般是把传递引用翻译为传递指针,所以效率上和传递指针是相同的,只是语法上更加安全,代码也可以更简洁一些。参考文献:原创 收起