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

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

  • 相关阅读:
    OpenGL 混合功能
    Android之Project、Module的区别
    Android之基于监听的事件处理机制
    Android之布局
    You may experience an access violation when you access an STL object through a pointer or reference in a different DLL or EXE
    导出类成员里含有stl对象
    从html代码里提取字符编码
    libcurl-7.54.1附加zlib1.2.11的编译
    libcurl同时下载多个文件
    在内存中运行可执行程序(转)
  • 原文地址:https://www.cnblogs.com/XNQC1314/p/9047963.html
Copyright © 2020-2023  润新知