问答详情
源自:4-3 重载运算符

++ i 和i++ 的重载

如何重载++i;

提问者:qq_一眼万年_5 2017-11-12 15:21

个回答

  • 温暖而不炙热
    2017-11-14 19:40:05

    1. 参数

    前置()

    后置(int)

    2. 返回值

    前置int&

    后置 const int// const是为了防止i++++运算的结果并非预期。

    3. 函数体

    后置调用前置  // 这样只需要维护前置运算符的代码即可。

    步骤:1. 保留旧值到oldvalue; 2. 增加旧值++(*this);3. 返回保留的旧值return oldValue

    4. 优先用哪个

    因后置会构造并析构oldValue临时对象,故比前置效率低。即优先用前置++i。

    UPInt& UPInt::operator++()  

    {  

       *this += 1;  

       return *this;  

    // 或return ++privateVal;  

    }  

      

    //后置 i++ -----------先调用原值,再++  

    const UPInt UPInt::operator++(int)  

    {  

       UPInt oldValue = *this;  

       ++(*this);  

       return oldValue;  

    }