引用和指针,谁更安全,谁更高效?

& 在C中表示取地址符,在C++中表示引用

在声明一个引用变量时,必须将其初始化,并且不允许在函数执行期间再将其作为其他变量的引用。

那么引用和指针谁更安全,谁更高效呢?

首先我们要认识到,使用引用传递函数的参数时,在内存中并没有实参的副本,而是对实参直接操作。当使用传值调用时,需要给形参分配存储单元,形参变量是实参的副本,如果传递的是对象,还要调用拷贝构造函数。因此传引用调用要比传值调用效率更高,占空间更少。

使用指针作为函数的参数也可以达到引用同样的效果,但是在被调函数中同样要给形参分配存储单元,在这个意义上说,引用的效率更高。而且频繁使用“*指针变量名”的形式进行运算容易产生错误而且可阅读性较差。因此引用是个更安全高效的选择。

常引用

如果既要提高程序的效率,又要使传递给函数的数据不在函数里被改变,可以使用常引用。const typename & 引用名 = 变量名

用这种方式声明的引用,不能通过引用对目标变量的值进行修改。保证了引用的安全性。

引用在可以被定义为const的情况下,应当尽量被定义成const。

猜你喜欢

转载自www.cnblogs.com/conanpeng/p/12806421.html