用VC++6.0打开考生文件夹下的源程序文件3.cpp,这个工程完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能: (1)初始化Num2的值为j,请在注释1后添加适当的语句。 (2)补充全局函数fun使之能够调用类TC的

admin2021-09-05  45

问题 用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
class TC
{
public:
//********1********
TC(int i,int j)
{
  Num1=i:
  Num3-=i:
}
void Print()
{
  cout<<"Num1="<  cout<<"Nurn2="<  cout<<"Num3="<}
void Add(int i)
{
  Num3-=i:
}
private:
int Num1:
const int Num2;
static int Num3;
//********1********
};
//********1********
void fun()
{
TC obj(5,9);
obj.Num1=-6;
//********1********
obj.Add();
obj.Print();
}
void main()
{
TC obj(7,12);
obj.Print();
fun();
return;
}

选项

答案(1)“TC(int i,int j)”应改为“TC(int i,int j):Num2(j)”。 (2)应添加“friend void fun();”。 (3)应添加“int TC::Num3=0;”。 (4)“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才能达到目的。
转载请注明原文地址:https://kaotiyun.com/show/0b5p777K
0

最新回复(0)