求大神指点!!谢谢!!

唐僧爱吃唐僧肉 2017-07-17 08:31:22
#include <iostream>
using namespace std;
class A
{
int sum;
public:
static int count;
A(int a=0)
{
sum=a+count;
count++;
cout<<count<<'\t'<<sum<<'\n';
}
};
int A::count=0;
int main()
{
A a[2];
A b(4);
cout<<"count="<<b.count<<'\n';
}
分析一下这个程序的输出结果!谢谢!
...全文
147 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
棉猴 2017-07-18
  • 打赏
  • 举报
回复
同意楼上的。

战在春秋 2017-07-18
  • 打赏
  • 举报
回复
怎么出来的
//A  a[2];会调用两次构造函数,没有传入参数,a取默认值0,第一次:
A(int  a = 0)
{
	sum = a + count; //sum =  0 + 0 = 0
	count++;             //count = 0 + 1 = 1
	cout << count << '\t' << sum << '\n';  //输出1  0
}
//A a[2];会调用两次构造函数,没有传入参数,a取默认值0,第二次: A(int a = 0) { sum = a + count; //sum = 0 + 1 = 1 count++; //count = 1 + 1 = 2 cout << count << '\t' << sum << '\n'; //输出2 1
}
//A  b(4); 调用一次构造函数,传入参数 4, a = 4
A(int  a = 0)
{
	sum = a + count; //sum  = 4 + 2 = 6
	count++;             //count = 2 +1 =  3
	cout << count << '\t' << sum << '\n';  //输出3  6
}
  • 打赏
  • 举报
回复
前几行1 0 2 1 3 6 怎么出来的能否解释下?
战在春秋 2017-07-17
  • 打赏
  • 举报
回复
引用
分析一下这个程序的输出结果
结果应该是3。 count定义为类的静态变量,初值为0。 每次调用构造函数后count值增加1。 问题就转化为:调用了几次构造函数呢?
A  a[2];  //创建了2个对象a[0]和a[1],调用了两次构造函数
A  b(4); //创建了1个对象b,调用了一次构造函数
//合计调用了3次构造函数
补充说明: A(int a=0) //这里的参数 a = 0,是指调用构造函数时,如果不传入参数值,a的 默认值 为0

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧