【发布时间】:2015-05-29 22:11:18
【问题描述】:
假设我们有一个类myClass 存储一个int。我想重载标准运算符,如+、=、+=、++ 等。如何重载后缀增量,即operator++(int),以便在计算表达式后完成实际增量?我的意思是,在下面的代码执行完 bean 之后,
myClass object1(0), object2(1);
object1 = object2++ + object2;
我希望 object1 和 object2 都持有 2。
天真的方法
myClass& operator++(int){
myClass tmp(x) //x - stored value
++x;
return tmp;
}
不起作用,因为在 + 之前调用了 ++。
我一直在寻找这个问题的答案,但没有发现任何相关信息。坦率地说,直到最近我还认为不可能做到这一点。
【问题讨论】:
-
为什么要这样做?我怀疑任何想要这样做的现实世界的应用程序都有重大的设计问题,应该用一根非常大的棍子敲打。
-
我不明白,
object1和object2不会都持有2,因为在评估语句后已经执行了后增量?
标签: c++