运算符 ++ 中的 Int 参数

2024-03-02

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(使用前将#替换为@)

运算符 ++ 中的 Int 参数 的相关文章

随机推荐