【发布时间】:2015-06-01 21:04:40
【问题描述】:
我意识到在网络上重载赋值运算符的例子之后有例子,但我花了最后几个小时试图在我的程序中实现它们并弄清楚它们是如何工作的,但我似乎做不到它和任何帮助将不胜感激。
我正在尝试实现一个重载的赋值运算符函数。
我有 3 个文件在工作,Complex.h 头文件、Complex.cpp 定义文件和我用作测试我的 Complex 类的驱动程序的 .cpp 文件。
在 Complex.h 头文件中我的赋值运算符原型:
Complex &operator= (Complex&);
到目前为止,我在 .cpp 文件中对重载运算符的定义是:
Complex &Complex::operator=(Complex& first)
{
if (real == first.real && imaginary == first.imaginary)
return Complex(real, imaginary);
return first;
};
我在函数中调用赋值运算符的方式是:
x = y - z;
所以具体来说,我的问题是,当我用 x = y -z 调用重载赋值运算符时,当我返回传入的值时它不会将传入的值分配给 x,我无法弄清楚为什么从网络上的众多示例和解释中,任何帮助都将不胜感激,我提前感谢您的任何帮助。
【问题讨论】:
-
您为什么不在一个接一个的例子中阅读其中的一些例子,并将您的赋值运算符建模为一个真正有效的?
-
=不应该修改它的右手操作数。 -
@juanchopanza 我试过了,对此我深表歉意,并真诚地感谢您的意见,但我的大脑就是不能这样工作,我确实尝试阅读这些示例并在这些工作示例之后进行建模,但是它将以递归结束。
-
@zenith 所以你是说先返回我是在修改右手操作数?
-
不,他显然没有修改右手操作数。
标签: c++ operator-overloading assignment-operator