使用VC6打开考生文件夹下的源程序文件modil.cpp, —num:num:10 #include int i=10; C1ass TestClass { public: TestClass(int i) { cout

admin2015-07-20  14

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,
—num:num:10
#include
int i=10;
C1ass TestClass
{
public:
    TestClass(int i)
    {
    cout<<“num:”<    //********error*******
    i=i+1;
    }
    void Print()const
    {
    cout<<“num:”<    }
private:
    int i ;
  };
  void main()
  {
    //********error********
    TestClass print;
    int i(0);
    print.Print(),
    //********error********
    cout<<”num:”<    return ;
  }

选项

答案(1)this一>i=i+1;或TestClass::i=i+1;或 (*this).i=i+1; (2)TestClass print(0); (3)cout<<”num:”(<::i<
解析 程序要求输出member的值为O,1,10。从已定源程序的main主函数开始入手,可以看出程序首先通过类TestClass中的TestClass构造函数的调用实现第一次hum值的输出;然后通过调用类TestClass中的成员函数Print实现第二次hum值的输出;最后通过输出函数cout实现第三次hum值的输出。
解题思路
(1)打开modil.cpp,调试程序,显示错误提示为第二标识下“modil.cpp(22):error C2512:‘TestClass’:no appropriatedefault constructor available”,主函数中首先调用的就是第2个标识下的TestClass print函数,构造函数的名字和类的名字是一样的,而程序中给出的“TestClass print;”没有给出参数,所以程序调试时无法确定调用的函数。根据TestClass构造函数“TestClass(int”的定义,应该存在int型参数,并且题目要求第一次输出的值为“0”,所以第2个标识正确的调用函数为“TestClassprint(0);”
(2)运行,发现第一次的输出正确,但是第二次的输出值为“858993460”,并不是题目中要求的“1”。在主函数中,可知第二次输出调用的是“print.Print();”即类TestClass的成员函数“Print()”。成员函数Print的定义“voidPrintoconst”中的输出语句为“tout<<“num:”<i=i+1;”或“TestClass::i=i+1;”或“(*this).i=i++”。
(3)主函数中通过“cout<<“num:”<
转载请注明原文地址:https://kaotiyun.com/show/rCNp777K
0

最新回复(0)