用VC++6.0打开考生文件夹下的源程序文件3.cpp,这个工程完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能: (1)初始化Num2的值为j,请在注释1后添加适当的语句。 (2)补充全局函数fun使之能够调用类TC的成员变量,请在注释2后添加适当的语句。 (3)初始化静态变量,请在注释3后添加适当的语句。 (4)修改注释4后的语句。使得程序输出以下内容: Num1=7 Num2=12 Num3=-7 Num1=6 Num2=9 Num3=-17 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: #include classTC { public: //********1******** TC(inti,intj) { Num1=i: Num3-=i: } voidPrint() { cout<<"Numl="< cout<<"Num2="< cout<<"Num3="< } voidAdd(inti) { Num3-=i: } private: intNuml; constintNum2; staticintNum3; //********2********}; //********3********voidfun( ) { TCobj(5,9); obj.Numl=6; //********4********obj.Add( ); obj.Print( ); } voidmain( ) { TCobj(7,12); obj.Print( ); fun( ); return; }
参考答案:(1)“TC(inti,intj)”应改为“TC(inti,intj):Num2(j)”。 (2)应添加“friendvoidfun();”。 (3)应添加“intTC::Num3=0;”。 (4)“obj.Add();”应改为“0bj.Add(5);”。
解析:【解析】本题考查了构造函数初始化列表、声明友元函数、初始化静态成员变量。第1处应该添加初始化Num2成员的语句,由于该成员为常成员,所以只能通过初始化列表初始化。第2处应添加将fun函数声明为TC类友元的语句。静态成员变量需要在类外初始化,就像定义类的成员函数一样。可以将静态成员变量看成全局变量。Add函数需要一个int型参数,从Add函数的定义来看,它将增加形参i的值。由于main函数中先调用了一次Print成员函数,已经输出了3行数据,然后再调用fun函数的,所以fun函数中调用Print是输出后3行数据。Num3在第1次输出时值为10,fun函数中创建obj对象时,又让其增加1,而希望它最终的值是16,所以不难得知,Add()中应传入5才能达到目的。