问答题 请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,该工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句有错误。请改正这些错误,使程序的输出结果为:1 2 3 4 5 6 7 8 9 10注意:只能修改注释“//ERROR****found****”的下一行语句,不要改动程序中的其他内容。//projl.cpp#include<iostream>using namespace std;class MyClass {public: MyClass(int len) { array=new int[len]; arraySize=len; for(int i=0;i<arraySize;i++)array[i]=i+1;}~MyClass(){//ERROR**********found********** delete array[i];}void Print()const{for(int i=0;i<arraySize;i++)//ERROR**********found********** cin<<array[i]<<”; cout<<endl;}private: int*array; int arraySize;},int main(){//ERROR********** found**********MyClass obj;obj.Print();return 0;}
【正确答案】正确答案:delete[]array; cout<
【答案解析】解析:本题考查MyClass类,其中涉及构造函数、析构函数、输出语句、动态数组和语句初始化。一般考到类时就会涉及构造函数,要注意构造函数的定义方法。析构函数就是考查delete语句的用法,其一般形式为:delete[]+要释放的指针。 【解题思路】 (1)语法错误,使用delete语句删除一个指针时,直接把指针变量的名称放在delete[]后面即可。 (2)考查考生对输入、输出语句的运用。使用cout进行数据输出操作,一般格式为:cout<<Expr;。其中,Expr代表一个表达式,“<<”称为插入运算符,该语句的含义是,将表达式Expr的值输出到屏幕上。使用cin进行数据输入操作,一般格式为:cin>>var;。其中,var代表一个变量,“>>”称为提取运算符,该语句的含义是,将用户输入的数据保存到var中。 (3)考查语句的初始化,我们来看MyClass类的构造函数: MyClass(int len) { array=new int[len]; //给数组动 态分配空间,大小为len arraysize=len; //赋值 for(int i=0;i<arraySize;i++) array[i]=i+1; //循环给数组赋值,从1到10 } 请注意:形参len没有定义默认值,因此要想使array动态数组里依次存放1,2,3,4,5,6,7,8,9,10,就是要给len赋值为10。 【解题宝典】 delete语句是最常考的知识点,用于释放指针变量,其一般形式为:delete[]+要释放的指针。