这段程序是怎么运行的?

#include<iostream>usingnamespacestd;classInt{staticintaddtime;public:Int(intx){}frien... #include <iostream>
using namespace std;
class Int
{
static int addtime;

public:
Int(int x) {}
friend int operator+(const Int &r1, const Int &r2)
{
return ++addtime;
}
};
int Int::addtime = 0;

int main()
{
Int a(1), b(1), c(1);
cout << a + a << endl;
cout << b + b << endl;
cout << b + c << endl;
cout << c + c << endl;
cout << a + a << endl;
}
展开
 我来答
xgn911
2022-10-26 · TA获得超过1363个赞
知道小有建树答主
回答量:1493
采纳率:96%
帮助的人:640万
展开全部

Int类的静态成员变量addtime初值为0

然后类中声明了友元函数operator+()对加号+操作符进行重载

内容为使addtime自增并返回自增后的值

因此在进行五次Int对象之间的加法后

相当于调用了五次operator+()函数

输出结果应依次为:1 2 3 4 5

代码注释和运行结果如下:

可见输出与分析相符,望采纳~

追问
那输出那个a+a是什么意思
追答
因为+运算符已经被重载为operator+(Int &r1, Int &r2)
所以cout<<a+a相当于cout<<operator+(a, a)
而operator+(a, a)函数的返回值为++addtime
即返回结果只跟addtime有关,跟输入的a已经没有关系了
因此五次调用operator+()后,会依次输出addtime的值为从1到5
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式