用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<iostream.h>
class TC
public:
//********1********
TC(int i,int j)
Num1=i;
Num3=-i;
void Print()
cout<<"Num1="<<Num1<<end1;
cout<<"Num2="<<Num2<<end1;
cout<<"Num3="<<Num3<<end1;
void Add(int i)
Num3-=i;
private:
int Num1;
const int Num2;
static int Num3;
//********2********
;
//********3********
void fun()
TC obj(5,9);
obj.Num1=6;
//********4********
obj.Add();
obj.Print();
void main()
TC obj(7,12);
obj.Print();
fun();
return;
参考答案:“obj.Add();”应改为“obj.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才能达到目的。