问题 问答题

用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才能达到目的。

判断题
单项选择题