【发布时间】:2014-07-20 08:35:37
【问题描述】:
Distance operator- ()
{
feet = -feet;
inches = -inches;
return Distance(feet, inches);
}
我正在尝试学习运算符重载。上面的代码用于重载“-”运算符。但是我无法理解 return 语句在这里是如何工作的。究竟会发生什么?这里的对象是怎么返回的?
上面的代码运行良好,但是写在下面这个语句的代码却没有。这段代码有什么错误?
Distance operator- ()
{
Distance d;
d.feet=(-feet);
d.inches=(-inches);
return d;
}
【问题讨论】:
-
@puppy:'距离(英尺,英寸);'的目的是什么?它到底有什么作用?
-
这也是非常糟糕的代码。一元否定不应改变操作数。
-
这与
return无关。 -
@user3734204:如果返回 4,则返回一个临时 int(在堆栈上)。如果您返回
Distance(feet,inches),您将返回一个使用它的构造函数创建的临时距离对象,该对象接受两个数字。这并不复杂,请阅读 C++ 书籍。 -
@user3734204:您的第二个代码中的
d是什么?