【c++深度解析 5】 前置操作符和后置操作符重载

本文深入探讨了C++中前置++和后置++的区别,包括它们在基础类型和类类型对象上的表现,以及如何通过重载操作符来区分和实现这两种自增行为。通过实例代码展示了操作符重载的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题  1.下面的代码有区别吗?为什么?

         i++;   // i的值作为返回值,i自增1

         ++i;  // i 自增1,i的值作为返回值

  对于基础类型的变量
       前置++的效率 和后置++的效率基本相同(编译器进行了优化)

对于类类型的对象

    前置++的效率高于后置++,尽量使用前置++操作符提高程序效率

问题2. c++ 操作符可以重载吗? 如何区分前置++和后置++

     1.++ 操作符可以重载

    2. 全局函数成员函数均可进行重载  

   3. 重载前置++操作符不需要额外的参数

     Class  &  operator ++()

   {

}

     重载后置++操作符需要额外的参数

       Class  operator ++ (int)

下面用一段代码说明++操作符的重载:

#include <iostream>
#include <string>

using namespace std;

class Test
{
    int m_Value;
public:
    Test(int i)
    {
        m_Value= i;
    }
    
    int value()
    {
        return m_Value;
    }
    
    Test& operator ++ ()   // 前置操作符,不需要额外的参数
    {
        ++m_Value;
        
        return *this;
    }
    
    Test operator ++ (int) // 后置操作符,需要一个int类型的占位参数
    {
        Test ret(m_Value);  //  创建了一个临时对象
        
        m_Value++;
        
        return ret;
    }
};

int main()
{
    Test t(0);
    
    t++;
    
    ++t;
    
    return 0;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值