C++ 运算符+中的Int参数+;
除了让编译器区分C++ 运算符+中的Int参数+;,c++,class,operator-overloading,arguments,C++,Class,Operator Overloading,Arguments,除了让编译器区分myInstance++和++myInstance之外,operator++中可选的int参数实际上是什么?如果是,是什么 运算符++中的可选int参数是否表示任何内容 不是。唯一的目的是区分这两个重载。非常令人失望,我知道 正如@Konrad所说,int参数除了用于区分增量前和增量后的形式外,不用于任何其他用途 但是请注意,运算符应该返回一个值。增量前应返回一个引用,增量后应按值返回。也就是说: class myClass { public: void ope
myInstance++
和++myInstance
之外,operator++
中可选的int
参数实际上是什么?如果是,是什么
运算符++中的可选int参数是否表示任何内容
不是。唯一的目的是区分这两个重载。非常令人失望,我知道 正如@Konrad所说,int参数除了用于区分增量前和增量后的形式外,不用于任何其他用途 但是请注意,运算符应该返回一个值。增量前应返回一个引用,增量后应按值返回。也就是说:
class myClass
{
public:
void operator++()
{
// ++myInstance.
}
void operator++(int)
{
// myInstance++.
}
}
编辑:
正如Gene Bushuyev在下面正确提到的那样,operator++
返回non-void并不是绝对的要求。然而,在大多数情况下(我想不出例外),您需要这样做。特别是如果要将运算符的结果指定给其他值,例如:
class myClass
{
public:
myClass& operator++()
{
// ++myInstance.
return * this;
}
myClass operator++(int)
{
// myInstance++.
myClass orig = *this;
++(*this); // do the actual increment
return orig;
}
};
编辑2:
此外,对于postmcrement版本,您将在对象递增之前返回该对象。这通常使用本地临时文件来完成。如上所述。退货可能是一个人想要的,尽管这不是绝对的要求。另外,您可能会从
操作符++(int)
返回一个带有原始值的临时值,而不是*this
。这也不是绝对的要求。@Gene:True,不是绝对的要求。编辑。
myClass a;
myClass x = a++;