繁体   English   中英

运算符++中的Int Argument

[英]Int Argument in operator++

class myClass
{
    public:

    void operator++()
    {
        // ++myInstance.
    }

    void operator++(int)
    {
        // myInstance++.
    }
}

除了让编译器区分myInstance++++myInstanceoperator++的可选int参数实际上是什么? 如果是这样,它是什么?

正如@Konrad所说,除了在增量前和增量后形式之间进行distingush之外,int参数不会用于任何事情。

但请注意,您的运算符应返回一个值。 预增量应返回引用,后增量应按值返回。 以机智:

class myClass
{

public:

myClass& operator++()
{
    // ++myInstance. 
    return * this;   
}
myClass operator++(int)
{
    // myInstance++.
    myClass orig = *this;
    ++(*this);  // do the actual increment
    return orig;
}
};

编辑:

正如Gene Bushuyev在下面正确提到的那样, operator++返回非空虚并不是绝对的要求。 但是,在大多数情况下(我不能想到例外)你需要。 特别是如果要将运算符的结果分配给其他值,例如:

myClass a;
myClass x = a++;

EDIT2:

此外,使用postimcrement版本,您将在对象增加之前返回该对象。 这通常使用本地临时完成。 往上看。

实际上对于任何东西都是operator ++中的可选int参数?

不。唯一的目的是区分两个重载。 我知道,非常令人失望。 ;-)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM