天天看点

函数参数是指针 OR 引用?该不该加const?

  • 先来说说指针与引用的区别:

1.指针可以在任何时候被初始化,引用在创建时必须初始化。

函数参数是指针 OR 引用?该不该加const?

2.一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。

函数参数是指针 OR 引用?该不该加const?
函数参数是指针 OR 引用?该不该加const?

3.不存在空引用。引用必须连接到一块合法的内存。

4.无论传值还是传指针,函数都会生成一个临时变量,但传引用时,不会生成临时变量。引用并不产生对象的

副本,也就是参数传递时,对象无须复制。

5.引用在定义时不可加const,否则编译出错,在形参前面则可以加const以确保在函数中该变量不会被修改。

  • 那么,在定义时,形参到底是指针呢?还是引用?

一般情况下,建议使用引用,因为不产生对象的拷贝,速度快。但是也不是说指针就一无是处了。

摘自『高质量c++编程』

条款一:指针与引用的区别

指针与引用看上去完全不同(指针用操作符’*’和’->’,引用使用操作符’.’),但是它们似乎有相同的功能。指针与引用都是让你间接引用其他对象。你如何决定在什么时候使用指针,在什么时候使用引用呢?

首先,要认识到在任何情况下都不能用指向空值的引用。一个引用必须总是指向某些对象。因此如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样你可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。

  • 那什么时候该加const呢?

答案是当你不想也不愿别人改变你的参数值时。

函数参数是指针 OR 引用?该不该加const?
函数参数是指针 OR 引用?该不该加const?

继续阅读