class myClass
{
public:
void operator++()
{
// ++myInstance.
}
void operator++(int)
{
// myInstance++.
}
}
除了让编译器区分myInstance++
and ++myInstance
, 是可选的int
论证中operator++
实际上是为了什么?如果是这样,那是什么?
正如@Konrad 所说,除了区分预增量和后增量形式之外, int 参数不用于任何其他用途。
但请注意,您的运算符应该返回一个值。前增量应返回引用,后增量应按值返回。以机智:
class myClass
{
public:
myClass& operator++()
{
// ++myInstance.
return * this;
}
myClass operator++(int)
{
// myInstance++.
myClass orig = *this;
++(*this); // do the actual increment
return orig;
}
};
EDIT:
正如吉恩·布舒耶夫(Gene Bushuyev)在下面正确提到的那样,这并不是绝对的要求operator++
返回非空值。然而,在大多数情况下(我想不出例外)你需要这样做。特别是如果您想将运算符的结果分配给其他值,例如:
myClass a;
myClass x = a++;
EDIT2:
此外,对于后增量版本,您将在增量之前返回对象。这通常是使用本地临时文件来完成的。往上看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)