【发布时间】:2011-09-16 13:41:03
【问题描述】:
我可以使用吗:
MyClass& MyClass::operator++ () {
a++; // private var of MyClass
return (*this);
}
也可以是:
MyClass MyClass::operator++ ();
有什么区别?
感谢您的回答。我还有一个问题。
很多人都会这样做:
MyClass& MyClass::operator++();
MyClass MyClass::operator++(int);
这不是不合逻辑吗?如果可以的话,请举一些例子。
我知道第一个版本是前增量,第二个是后增量,但我问为什么第一个返回引用而第二个没有?它是在同一个代码(类)中,并且使用同一个代码。
【问题讨论】:
-
好问题。我仍在等待一个答案,说明为什么第二个不会起作用。
-
@Mark,您将不得不等待很长时间。第二个会工作得很好。这实际上是一个设计问题——他应该做什么,而不是他必须做什么。他可能应该返回一个引用,但他可能做无数其他事情,包括他的第二个例子。
-
@Rob,你的答案是我希望看到的——你已经得到了我的 +1。
-
name3r,你应该得到一本 C++ 书。您的问题是基本问题之一,一本书应该回答它们。也就是说,第一个版本用于前置增量,而第二个版本用于后置增量(dummy-int 参数)。
-
至于您的第二个问题,后增量不会返回引用,因为这不会正确地为运算符建模。后增量返回 prior 值而不是 current 值。根据定义,返回引用将返回当前值。
标签: c++ function operator-overloading