lhs和rhs通过常量引用传递(const Type&)。
CVector operator+ (const CVector& lhs, const CVector& rhs) {
CVector temp;
temp.x = lhs.x + rhs.x;
temp.y = lhs.y + rhs.y;
return temp;
}
答案 0 :(得分:1)
当它是要复制的轻量级(便宜)数据时(例如,对于int,float,char等,通过值传递就好了)
在函数/运算符实现中观察参数(即它是输入只读参数)
作为两个点的总和,我们将得到为什么我们应该通过不断的参考。
为了清楚了解,请参阅http://www.cs.fsu.edu/~myers/c++/notes/references.html
答案 1 :(得分:1)
更喜欢按照这些指南选择参数。对于仅输入参数:
始终对所有指针或对仅输入参数的引用进行const限定。
首选输入原始类型(例如char,float)和值便宜的值对象(例如,Point,complex)按值计算。
首选参考const。
如果函数需要其参数的副本,请考虑按值传递而不是引用。这在概念上与引用const和执行副本相同,它可以帮助编译器更好地优化临时性。
对于输出或输入/输出参数:
如果参数是可选的,则首选(智能)指针传递(因此调用者可以传递null作为"不可用"或者"不关心"值)或者如果函数存储指针的副本或以其他方式操纵参数的所有权。
如果参数是必需的,并且函数不会存储指向它的指针或以其他方式影响其所有权,则首选通过引用传递。这表明该参数是必需的,并使调用者负责提供有效的对象。
参考:[C ++编码标准:101规则,指南和最佳实践]#25。通过值,(智能)指针或参考
适当地获取参数答案 2 :(得分:0)
简而言之,要确保数据的不变性。
摘录自以下链接:
当通过引用传递参数时,将为实际参数创建引用(这需要最少的时间)并且不会复制值。这使我们能够以最小的性能损失传递大型结构和类。
引用允许函数更改参数的值,这在许多情况下是不合需要的。如果我们知道函数不应该改变参数的值,但又不想通过值传递,那么最好的解决方案是通过const引用。
const
引用是一个不允许更改被引用变量的引用。因此,如果我们使用const引用作为参数,我们向调用者保证函数不会(也不能)更改参数!
参考:http://www.learncpp.com/cpp-tutorial/73-passing-arguments-by-reference/
答案 3 :(得分:0)
why arguments are passed as constant
=>当想要阻止在被调用函数中改变各个数据成员时。
why constant references
=>防止创建临时对象