c++ - 当通过引用传递成为强制通过地址/指针传递时

标签 c++ pointers pass-by-reference

谁能举出一些例子,说明通过引用传递优于通过指针传递。

基本上两者都提供相同的功能,但我想知道在什么地方通过引用传递是强制性的。

此外,请建议如何决定使用两者中的任何一个。

请提供一些基本示例。

最佳答案

复制构造函数和赋值运算符。

struct A {
  ...
  A(const A& copy);
  A& operator = (const A& copy);
};

这些是强制性的情况。除了这些,还可能有其他情况(例如重载其他运算符,如 +<> 等等)。

Also, please suggest how to decide to use either of the two.

在大多数地方我更喜欢引用(更多 C++ 风格),如果不能使用引用,我倾向于使用指针(更多 C 风格)。
引用是 const 的某种类比表示指针;即 A&类似于 A* const .因此,它们提供了一些内置的安全措施,以防止意外覆盖位置。

关于c++ - 当通过引用传递成为强制通过地址/指针传递时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10088315/

相关文章:

c++ - 使用 for_each C++ 将数据输出到文件?

c++ - 检查指针是否指向特定类 C++

c - 带二维数组的指针

通过引用调用、const 正确性和对引用结构的读写访问 - 未定义的行为

c - 通过函数传递链表头作为C中的地址

c++ - #将所有 .cpp 文件包含在一个编译单元中?

c++ - 如何判断虚拟内存页是否已被锁定?

c++ - 如果我知道只使用现有元素,我可以在数组开头之前传递一个指针吗?

c - 如何引用二维数组?

java - 了解 Java 在用作方法参数时如何处理对象