请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: value=63 number=1 注

admin2016-08-19  29

问题 请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
    value=63
    number=1
    注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
1  #include
2  using namespace std;
3
4  class MyClasS{
5    int*p;
6    const int N;
7 public:
8    //ERROR  ******** found********
9    MyClas S(int val):N=1
10    {
11  p=new int;
12    *p=val;
13    }
14    //ERROR  ********found********
15    ~MyClass(){delete*p;)
16    friend void print(MyClass&obj);
17    };
18    //ERROR  ********found********
19  void MyClass::print(MyClasS&obj)
20  {
21    cout<<"value="<< *(obj.p)  <22    cout  <<"number  ="<23    }
24  int main()
25    {
26    MyClass obj(63);
27   print(obj);
28    return 0;
29    }

选项

答案(1)MyClass(int val):N(1) (2)~MyClass(){delete[]p;} (3)void print(MyClass&obj)

解析 (1)主要考查考生对构造函数的掌握,在这里不能使用赋值语句。
    (2)主要考查考生对析构函数的掌握,析构函数的delete语句要使用标识符“[]”,即delete[]p;。
    (3)主要考查考生对友元函数的掌握,友元函数并不属于类,因此定义时前面不用加类名和作用域符号。
转载请注明原文地址:https://jikaoti.com/ti/X7E0FFFM
0

最新回复(0)