ahapeach 2021-01-31 18:53 采纳率: 50%
浏览 11

C++中关于重载前置自增运算符的问题

请大佬们解释一下以下两段代码的运行结果,主要是++p的结果不明白:

1.

#include<iostream>
using namespace std;
class My
{
	friend ostream& operator<<(ostream& cout, My& p);
	friend My& operator++(My p);
public:
	My()
	{
		x = 0;
	}
private:
	int x;
};

ostream& operator<<(ostream& cout, My &p)
{
	cout <<p.x;
	return cout;
}

My &operator++(My p)//前置++
{
	p.x += 1;
	return p;
}

int main()
{
	My p;
	cout <<++p<<endl;
	cout << p;
}

2.

#include<iostream>
using namespace std;
class My
{
	friend ostream& operator<<(ostream& cout, My p);
	friend My& operator++(My p);
public:
	My()
	{
		x = 0;
	}
private:
	int x;
};

ostream& operator<<(ostream& cout, My p)
{
	cout <<p.x;
	return cout;
}
My &operator++(My p)//前置++
{
	p.x += 1;
	return p;
}

int main()
{
	My p;
	cout <<++p<<endl;
	cout << p;
}

谢谢大佬们了!!!!!

  • 写回答

1条回答 默认 最新

  • KeLiaoo 2021-02-02 11:29
    关注

     

    friend My& operator++(My p);改成

    friend My& operator++(My& p);

    评论

报告相同问题?

悬赏问题

  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真
  • ¥15 关于#c语言#的问题,请各位专家解答!