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++;