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 @   纸包鱼  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示