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