zoukankan      html  css  js  c++  java
  • 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;
    };

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

  • 相关阅读:
    近期C#小问题总结
    Arcgis由栅格数据提取等值线
    Arcgis由离散点制作核密度图
    用Arcgis为离散点区域生成格网(渔网)
    Arcengine合并面要素
    对离散点进行抽稀
    对离散点进行区域分割
    关于异常来自 HRESULT:0x80040351
    分布式缓存---Memcached 入门
    Mongodb安装 for windows7 64位
  • 原文地址:https://www.cnblogs.com/XNQC1314/p/9047963.html
Copyright © 2011-2022 走看看