问答题
使用VC6打开
下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
(1)利用define定义常量TRUE为1,定义常量FALSE为0,请在注释//********1********后添加适当的语句。
(2)在类A2前增加A1的声明,请在注释//********2********后添加适当的语句。
(3)在类C1中声明友元函数bool func(A2&a,A1&b),请在注释//********3********后添加适当的语句。
(4)实现函数bool func (A2&obj1,A1&obj2)功能,检查两个类的值都为TRUE,则返回TRUE,请在注释//********4********后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include<iostream.h>
//********1********
#define FALSE0
//********2********
class A2
{
private:
bool m_A2;
friend bool func(A2& obj1, A1& obj2);
public:
A2 ()
m_A2 = FALSE;
public:
void setA2(bool n)
{
m_A2=n;
}
};
class A1
{
private:
bool m_A1;
//********3********
public:
A1 ()
{
m A1=TRUE;
}
public:
void setA1 (bool n)
{
m_A1=n;
}
};
bool func(A2& obj1,A1& obj2)
{
//*********4********
return
}
int main()
{
A2 obj0;
A1 obj1;
cout
<
<
func (obj0, obj1)
<
<
endl;
obj0.setA2 (TRUE);
obj1.setA1 (TRUE);
cout
<
<
func (obj0, obj1)
<
<
endl;
return 0;
}
【正确答案】
【答案解析】(1)添加语句:#define TRUE 1
(2)添加语句:class A1;
(3)添加语句:friend bool func(A2& obj1,A1& obj2);
(4)将“return”补充完整为:return obj1.m_A2==TRUE && obj2.m_A1=TRUE;
答案考生文件夹
[解析] 程序当中定义了两个类,每个类中具有一个bool型成员变量,函数func(A2&obj1,A1&obj2)功能是检查这两个类的成员变量值是否都为TRUE,如果均为TRUE返回真,否则返回FALSE,相当于一个逻辑与运算。
(1)#define命令一般将一个指定的标识符(即宏名)来代表一个字符串,其定义形式一般为:#define宏名(参数表)字符串,因此第1个标识下应添加#define TRUE 1。
(2)类声明格式为:“class<类名>;”,故第2个标识下应添加“class A1;”。
(3)友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数,3出添加语句:“friend bool func(A2& obj1,A1& obj2);”。
(4)函数func返回变量m_A2和m_A1的逻辑与运算结果,因此第4标识下应改为“return obj1.m_A2=TRUE && obj2.m_A1=TRUE;”。