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

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

  • 相关阅读:
    数据库的创建,数据的增删改查
    Ubuntu系统下查看显卡相关信息
    分布式文件系统测试方法与测试工具
    分布式存储产品的测试实践及心得
    sql注入
    web测试项目总结
    Ubuntu系统下使用Jenkins进行项目的自动构建还是项目回滚方法
    Ubuntu系统下Jenkins的git构建基本方法
    Ubuntu系统下在github中新增库的方法
    ADO.NET复习总结(2)--连接池
  • 原文地址:https://www.cnblogs.com/XNQC1314/p/9047963.html
Copyright © 2011-2022 走看看