使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TestClass1:0 TestClass2 注意:不要改动main函数,不能增行或删行,也不能更改程序的结

admin2018-10-23  36

问题 使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句:
    TestClass1:0
    TestClass2
  注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//******error******的下面。
1  #include<iostream.h>
2  struct TestClass1
3  {
4  TestClass1(int i=0)
5  {
6  m_i=i;
7  }
8  void print()
9  {
10  cout<<’’TestClass1:’’<<m_i<<end1;
11 };
12   int m_i;
13  };
14  class TestClass2
15  {
16  public:
17  TestClass2()
18  {
19  }
20  void print()
21  {
22   cout<<’’TestClass2’’<<end1;
23   };
24  //********error********
25  private:
26  ~TestClass2()
27    {
28    }
29 };
30  int main()
31  {
32    //********error********
33    TestClass1 obj1();
34    //********error********
35    TestClass2 obj2();
36    obj1.print();
37    obj2.print();
38    return 0;
39  }

选项

答案(1)public: (2)TestClassl obj1(0);或TestClass1 obj1; (3)TestClass2 obj2;

解析 程序要求输出TestClass1:0和TestClass2。从已定源程序的main主函数开始入手,可以看出程序首先定义TestClass1和TestClass2类型的变量,然后通过调用其中的print成员函数实现输出结果。
    (1)第1个标识下的“private:~TestClass2()”是析构函数,它不是私有的,所以这里应该为“删除private:或修改为public:”。
    (2)第2个标识下的“TestClass1 obj1();”语句是定义一个TestClass1类型的对象obj1(),根据类TestClass1构造函数的定义“TestClass1(int i=0)”,知道存在整型参数,应该补充参数,或者只是先定义一个对象名,然后在使用时补充参数,即修改为“TestClass1 obj1(0);或TestClass1 obj1;”。
    (3)同理第3个标识下的“TestClass2 obj2();”语句修改为“TestClass2 obj2;”。
转载请注明原文地址:https://kaotiyun.com/show/05Ap777K
0

最新回复(0)