可能重复:
What are the differences between pointer variable and reference variable in C++?
例如,我有两个执行相同操作的函数:
int func(int &a)
{
return a+1;
}
和
int func2(int *a)
{
return *a+1;
}
在调用其中任何一个函数时,使用func over func2有什么好处?
答案 0 :(得分:10)
根据具体情况,这些都可能是优点或缺点。
答案 1 :(得分:2)
指针更灵活,也可以在声明中预定义,如:
int func2(int *a = nullptr);
这在你的简单案例中不起作用,但在许多其他情况下却不起作用。
指针也可以更容易地用于其他事情,比如存储在列表中,打字和其他东西。
是的,无法重新分配引用。
答案 2 :(得分:2)
你的两个功能都错了。由于它们不修改传入的参数,因此它们应该将它们作为const引用,如下所示:
int func(const int &a)
{
return a+1;
}
int func2(const int *a)
{
return *a+1;
}
现在这里有一个参考优势,我可以将rvalues传递给参考版本:
func(10);
func(func(func(10)));
我不能用指针版本做到这一点。
答案 3 :(得分:0)
如果a是一个重载标准C ++运算符的对象(例如operator []或operator *),客户端可以使用更加标准的C ++语法,如[i],而不是a->运算符[](i)或(* a)[i]