问题 问答题

使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错误,请改正程序中的错误,使得程序输出:   member:1   member:10   member:100   注意:错误的语句在/********error********/的下面,修改该语句即可。其他的语句不能修改。   试题程序:   #include   inti=100;   classTC   {   public:   TC(inti)   {   cout<<"member:"<  /********error********/   i=i+9:   }   voidPrint()const   {   cout<<"member:"<  }   private:   inti;   };   voidmain()   {   /********error********/   TCobj;   inti(0);   obj.Print();   /********error********/   cout<<"member:"<  return;   }

答案

参考答案:(1)“i=i+9;”应改为“this->i=i+9;(*this).i=i+_9;或TC::i=i+9;”。   (2)“TCobj;”应改为“TCobj(1);”。   (3)“cout<<"member:"<

解析:【解析】本题考查了考生对变量作用域的了解情况。i=i+9;语句使形参的值自增9,这样做是毫无意义的,因为形参变量值在函数结束后不会被保存。所以等号左边的变量i应引用为TC的私有成员变量,将私有成员初始化为形参i+9的值,可以通过this指针来引用,也可以通过域作用符“::”。“TCobj;”语句会产生一条编译错误,因为TC类已经定义了一条TC(inti)构造函数,C++就不会为其自动生成默认构造函数了。这就意味着,要创建TC类的对象必须带有一个int型构造函数参数。该构造函数中的第1条就是输出语句。从输出了形参i的内容来看,这个构造参数应该为1。“cout<<"member:"<

单项选择题
单项选择题 A型题