使用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:"<