以下是运算符重载的示例代码。 什么是“&”表示语法
complx operator+(const complx&) const; ?
#include <iostream>
using namespace std;
class complx
{
double real,
imag;
public:
complx( double real = 0., double imag = 0.); // constructor
complx operator+(const complx&) const; // operator+()
};
// define constructor
complx::complx( double r, double i )
{
real = r; imag = i;
}
// define overloaded + (plus) operator
complx complx::operator+ (const complx& c) const
{
complx result;
result.real = (this->real + c.real);
result.imag = (this->imag + c.imag);
return result;
}
int main()
{
complx x(4,4);
complx y(6,6);
complx z = x + y; // calls complx::operator+()
}
答案 0 :(得分:2)
这意味着您将reference传递给变量,而不是它的副本。
答案 1 :(得分:2)
(const complx&)
您正在通过引用传递值。
引用只是原始对象的别名。
此处避免了额外的复制操作。 如果您使用了'pass by value',如:(const complex),那么复制构造函数 对于形式参数调用complex。
希望这在一定程度上有所帮助。
答案 2 :(得分:0)
这称为pass by reference, 特定于operator overloading
。这是将参数传递给函数的方法之一[1.Pass by Copy,2.Pass by address,3.Pass by Reference]。使用C
时,如果希望在函数中修改原始参数值时修改原始参数值,则可以使用pointers
。但Cpp
也提供pass by reference
,附加&
的名称就像传递参数的替代名称。 [并且还可以避免所有解除引用和与指针相关的内容]