c++中递增运算符的重载
要注意递增递减运算符有前置和后置的问题,使用类内定义,在形参上使用给一个int站位符,编译器会把有占位符的定义为后置,前置运算正常进行,返回一个引用
后置运算要返回一个值,而不是引用,因为实际的值已经改变了,返回的值是一个改变前的,因为这个值是用局部变量保存的,所以不能返回引用,因为相同的原因,在调用这个返回值的是时候只能使用拷贝运算而不能使用引用,所以operator<<也做了相应修改,
class Person
{
public:
Person();
Person & operator++ ();
Person operator++(int);
int m_a;
private:
int m_b;
};
Person & Person::operator++()
{
this->m_a++;
return *this;
}
Person Person::operator++(int)
{
Person temp = *this;
m_a++;
return temp;
}
Person::Person()
{
m_a = 10;
m_b = 10;
}
ostream & operator<< (ostream &cout,Person p)
{
cout << p.m_a ;
return cout;
}

浙公网安备 33010602011771号