C++ 当通过引用传递成为通过地址/指针传递的强制时
有人可以举一些例子,其中引用传递优于指针传递 基本上两者都提供相同的功能,但我想知道在哪里通过引用传递成为必需的 另外,请建议如何决定使用这两种方法之一C++ 当通过引用传递成为通过地址/指针传递的强制时,c++,pointers,pass-by-reference,C++,Pointers,Pass By Reference,有人可以举一些例子,其中引用传递优于指针传递 基本上两者都提供相同的功能,但我想知道在哪里通过引用传递成为必需的 另外,请建议如何决定使用这两种方法之一 请提供一些基本示例。复制构造函数和赋值运算符。 struct A { ... A(const A& copy); A& operator = (const A& copy); }; 这些都是强制性的情况。除此之外,还可能存在其他情况(例如,重载其他运算符,如+,等) 另外,请建议如何决定使用这两种方法之一
请提供一些基本示例。复制构造函数和赋值运算符。
struct A {
...
A(const A& copy);
A& operator = (const A& copy);
};
这些都是强制性的情况。除此之外,还可能存在其他情况(例如,重载其他运算符,如+
,
等)
另外,请建议如何决定使用这两种方法之一
我喜欢大多数地方的引用(更多C++风格),如果不能使用引用,我倾向于使用指针(更多的C风格)。
引用在某种程度上类似于
常量
指针的表示;i、 e.A&
类似于A*const
。因此,它们提供了一些内置的安全性,以防止意外覆盖位置。我的简单经验法则是,在可能的情况下,总是倾向于按引用传递。如果需要传递空值,则必须使用指针传递。否则使用按引用传递。重载运算符时,必须传递引用。
例如:
class A {
A& operator=(const A &other);
}
复制构造函数必须通过引用获取其参数 运算符重载必须通过值或引用而不是指针获取其参数 对于正常功能,由您选择;但如果要接受空参数或动态数组,则必须使用指针
有些人喜欢尽可能使用参考资料;不需要检查它是否为null,也不需要混淆它是否引用单个对象或数组,或者函数是否可能删除该对象。其他人更喜欢使用指针,因为它在调用站点上给出了函数可能更改对象的可见指示。这是作业吗?请添加标签。如果需要的话,只需要一些更好的解释:可能的副本:Bjarne已经回答了在他的样式指南中添加C++的直接原因。实际上,对于赋值运算符来说,按引用传递不是强制性的(从标准来看,按引用返回也不是强制性的)。在使用复制和交换习惯用法时,可以简单地传递值,这可能有利于复制和交换。