欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-21 19:40:19
一、C++的前置++和后置++ 在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;
};

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