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

  其解释和上面的++运算符重载解释基本相同,这里就不再次赘述了。

posted @ 2018-05-16 20:26  XNQC  阅读(1200)  评论(0编辑  收藏  举报