有人可以举一些例子,其中通过引用传递优于通过指针传递。
基本上两者都提供相同的功能,但我想知道在哪里通过引用成为强制性的。
另外,请建议如何决定使用两者中的任何一个。
请提出一些基本的例子。
有人可以举一些例子,其中通过引用传递优于通过指针传递。
基本上两者都提供相同的功能,但我想知道在哪里通过引用成为强制性的。
另外,请建议如何决定使用两者中的任何一个。
请提出一些基本的例子。
复制构造函数和赋值运算符。
struct A {
...
A(const A& copy);
A& operator = (const A& copy);
};
这些是强制性的情况。除了这些之外,还可能存在其他情况(例如重载其他运算符,如,+
等)。<
>
另外,请建议如何决定使用两者中的任何一个。
在大多数地方,我更喜欢引用(更多 C++ 风格),如果不能使用引用,我倾向于使用指针(更多 C 风格)。
引用是const
指针的类比表示;即A&
类似于A* const
。因此,它们提供了一些内置的安全性,以防止意外覆盖该位置。
我的简单经验法则是在可能的情况下总是更喜欢通过引用传递。如果您需要传递空值的能力,那么您必须使用指针传递。否则使用按引用传递。
重载运算符时,必须传递引用。例如 :
class A {
A& operator=(const A &other);
}
复制构造函数必须通过引用获取它们的参数。
运算符重载必须通过值或引用而不是指针来获取参数。
对于普通功能,您可以选择;尽管如果要接受空参数或动态数组,则必须使用指针。
有些人喜欢尽可能使用引用;无需检查它是否为空,也无需混淆它是指单个对象还是数组,或者函数是否可能删除该对象。其他人更喜欢使用指针,因为它在调用站点提供了一个可见的指示,表明该函数可能会更改对象。