C++的前置++、后置++和前置–、后置–

一、C++的前置++和后置++

在C++中,运算符重载是你必须要掌握的重点,而前置++和后置++有什么区别呢?其实前置++和后置++是有关于

影响效率的问题,前置++比后置++的效率要高,原因是因为前置++不会产生一个临时对象而去直接进行++运算,而后

置++要先产生一个临时对象来保存当前数据,然后进行++运算,最后返回临时对象,这样无形中会增加额外的开销,

这样肯定会影响效率的。下面是两种++运算的重载函数:

class Base
{
   public:
     Base(int data=0):m_data(data)
     {
     }
     ~Base()
     {}
   public:
     Base& operator++()
     {
        m_data++;
        return *this;
      }
     Base operator++(int)
     {
        Base tmp(m_data);
        m_data++;
        return tmp;
     }
   private:
     int m_data;
};

在上面的重载++运算符的函数中,第一个函数就是前置++运算符的重载,因为是返回的是当前对象,所以函数可

以引用返回。第二个函数就是后置++运算符的重载,因为在其内部创建了一个临时对象用来进行++运算,并且最后返

回的是临时对象的值,所以函数不能以引用返回,而且为了区分是前置++还是后置++运算符的重载,则添加一个参数

用于区别。

二、C++的前置--和后置--

同样的既然有前置++和后置++就会有前置--和后置--,下面是两种--运算符的重载:

class Base
{
   public:
     Base(int data=0):m_data(data)
     {
     }
     ~Base()
     {}
   public:
     Base& operator--()
     {
        m_data--;
        return *this;
      }
     Base operator--(int)
     {
        Base tmp(m_data);
        m_data--;
        return tmp;
     }
   private:
     int m_data;
};

其解释和上面的++运算符重载解释基本相同,这里就不再次赘述了。
原文链接: https://www.cnblogs.com/XNQC1314/p/9047963.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/274064

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月15日 上午12:03
下一篇 2023年2月15日 上午12:03

相关推荐