#include<iostream>
using namespace std;
class Three
{
private:
int m_a1;
int m_a2;
int m_a3;
public:
Three(int a1 = 0, int a2 = 0, int a3 = 0) //缺省构造函数
{
m_a1 = a1;
m_a2 = a2;
m_a3 = a3;
}
Three operator++(); //重载前置++
Three operator--(int); //重载后置++,int为哑参数,一般传值为0
void print() //打印函数
{
cout << m_a1 << " "<< m_a2 << " " << m_a3 << endl;
}
};
Three Three::operator++()
{
++m_a1;
++m_a2;
++m_a3;
return *this; //前置++,返回自增后的当前对象
}
Three Three::operator--(int)
{
Three tmp(*this);
m_a1--;
m_a2--;
m_a3--;
return tmp; //后置--,返回自减前的当前对象
}
int main()
{
Three op1(2, 3, 4);
Three op2; //缺省调用
op1.print(); //2 3 4
op1.operator++(); //显式调用前置++
op1.print(); //3 4 5
++op1; //隐式调用前置++
op1.print(); //4 5 6
op2 = op1--; //隐式调用,op1返回的是自减前的值,并赋给op2
op2.print(); //4 5 6
op1.print(); //3 4 5 op1打印的是已经自减后的本对象的值
system("pause");
return 0;
}
++和--的重载
最新推荐文章于 2024-04-18 01:04:31 发布