64,654
社区成员
发帖
与我相关
我的任务
分享
怎么出来的
//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
}
A a[2]; //创建了2个对象a[0]和a[1],调用了两次构造函数
A b(4); //创建了1个对象b,调用了一次构造函数
//合计调用了3次构造函数
补充说明:
A(int a=0) //这里的参数 a = 0,是指调用构造函数时,如果不传入参数值,a的 默认值 为0