问答题 请使用VC6或使用【答题】菜单打开 proj1下的工程proj1,其中在编辑窗口内显示的主程序文件中定义有类AAA和主函数main。程序文本中位于每行“// ERROR ****found****”下面的一行有错误,请加以改正。改正后程序的输出结果应该是:
sum=60
注意:只修改每个“// ERROR ****found****”下面的一行,不要改动程序中的其他任何内容。
#include <iostream>
using namespace std;
class AAA {
int a[10]; int n;
//ERROR *******found*******
private:
AAA (int aa [], int nn): n(nn) {
//ERROR *******found*******
for (int i = 0; i < n; i++) aa[i]=a[i];
}
int Geta (int i) {return a[i];}
};
int main() {
int a[6] = {2,5,8,10,15,20};
AAA x(a,6);
int sum = 0;
//ERROR *******found*******
for (int i=0; i<6; i++)
sum+=x.a[i];
cout << "sum =" << sum << endl;
return 0;
}
【正确答案】
【答案解析】(1)public:
(2)for(int i=0;i<n;i ++) a[i]=aa[i];
(3)for(int i=0;i<6;i++) sum+=x.Geta(i);
答案考生文件夹 [考点] 本题考查AAA类,其中涉及数组、构造函数和成员函数。
[解析] (1)构造函数肯定是公有成员,所以应使用public。
(2)主要考查考生对赋值语句的掌握,因为数组a是私有成员,因此a应该在左边,而数组aa是形参,要赋值给数组a。
(3)主要考查考生对成员函数调用的掌握,数组a是类的私有成员,因此不能被main函数直接调用,要通过成员函数Geta来调用数组a。
主要考查考生对公有成员的掌握,构造函数只能是公有成员,而私有成员不能被类外函数调用。