问答题

【参考答案】

(1)应添加“People(char*sUserName,intnOld)”。
(2)应添加“m_UserName[i]=0;”。
(3)应添加“friendvoidfun(char*s,People&personl,People&person2);”。
(4)将“if()”补充完整为“if(personl.m_Old)person2.mOld)”。
【解析】本题第1处要求“完成类的构造函数”。根据
“classPeople” 语句知道People为类,所以类People的构造函数名为People,根据第1处的大括弧中的语句知道函数中的参数为数组sUserName存放姓 名,整型nOld存放年龄,所以补充构造函数定义为“People(char*sUserName,intnOtd)”。第2处要求“完成构造函数对姓名 的贼值”。第2处补全姓名赋值,即“m_UserName[i]=0;”。第3处要求“定义类的友元函数fun”。在C++中,如果在本类以外的其他地方 定义了一个函数,在类体中是用friend对该函数进行声明的,此函数称为本类的友元函数,并且能够调用本类中的成员变量。程序中的fun函数定义为 “voidfun(char*S,People&personl,People&person2)”,所以声明fun()为类People的友元函数,即 这里补全“friendvoktfun(char*s,People&personl,People&person2);”。第4处要求“补充函数fun 的年龄比较”。类People中年龄的变量为m_Old,根据C++中类变量的调用格式补充第4处if语句中的条件判断语句,即“if(per- sonl.m_O1d)person2.m_Old)”。

(↓↓↓ 点击下方‘点击查看答案’看答案解析 ↓↓↓)

相关考题

判断题 在饱和土的固结过程中,孔隙水压力不断消散,总压力和有效应力不断增长。( )

问答题 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正错误,使得程序正确执行,并且输出以下语句: TC1:0 TC2注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。 试题程序: #include<iostream.h> structTC1 { TCl(inti=0) { m_i=i; } voidprint() { cout<<"TCl:"<<m_i<<endl; } intm_i; }; classTC2 { public: TC2() { } voidprint() { cout<<"TC2"<<endl: } //********error******** private: ~TC2() { } }; intmain() { //********error******** TC1obj1(); //********error******** TC20bj2(); obj1.print(); obj2.print(); return0; }

问答题 (1)应添加“virtualvoidGetNamt!()=0;”。 (2)应添加“constchar*GetName2()”。 (3)应添加“TC2(char*str)”。 (4)应添加“m_str[i]=0;”。 【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚函数”。在C++中,在基类中用virtual声明成员函数为虚函数。纯虚函数是在声明虚函数时被“初始化”为0的函数,即“virtualvoidGetName()=0;”。第2处要求“函数GetName2实现获得名字的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即“constchar*GetName2()”。第3处要求“实现TC2的构造函数”。TC2的构造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为“TC2(char*str)”。第4处要求“完成TC2的构造函数,实现对名字的处理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。