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;
}
posted @ 2022-04-10 11:44  纸包鱼  阅读(57)  评论(0)    收藏  举报