我一直在阅读,当执行重载操作符函数时,最好通过引用传递,通常出于性能原因。但我注意到,当我通过值传递对象时,它仍然具有相同的效果。不应该通过价值传递不影响运营商?我知道,如果你有两个int变量,并且你想通过将它们传递给另一个函数来交换它们,那么只有通过引用传递(或者如果你传递一个指针),它才会起作用。如果您刚刚通过该值,则变量最后保持不变。那么不应该同样适用于传递类对象吗?在过载函数中通过引用传递对象与按值传递对象
例子:
Person Person::operator+(Person obj1){
Person sum;
sum.age = this->age + obj1.age;
return sum;
}
,如果我有一个主要的和做的事:
Person person1(14);
Person person2(182);
Person3 = person1 + person2;
std::cout << person3.age << std::endl;
它做,如果我做了
Person Person::operator+(Person &obj1){
Person sum;
sum.age = this->age + obj1.age;
return sum;
}
所以我有点想同样的这就像我提到的交换方法。如果我将该值传递给交换函数,它将不会更改变量的原始值。我在想,如果我只是传递了对象而不是引用,那实际上并不会改变运算符的重载。现在我想,因为在我的Person类中,运算符和变量都在同一个类中定义,那么同样的不适用,这就是为什么它实际上会超载运算符?
“但我注意到,当我按值传递对象时,它仍然具有相同的效果。” - 有什么影响? – 2013-10-25 19:25:02
什么效果,什么操作符?添加一个例子。 –
“最好通过参考,通常是出于性能原因。”这些日子,情况正好相反。 –