问答题
使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)声明类objA1,请在注释//********1********后添加适当的语句。 (2)为类objA0增加友元函数func(),请在注释//********2********后添加适当的语句。 (3)为类objA1增加友元函数func(),请在注释//********3********后添加适当的语句。 (4)函数func()返回objA1对象中的变量和objA0的静态变量的乘积,请在注释//********4********后添加适当的语句。 注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#include<iostream.h>//********1********class objA0{private: static int m A0; //********2********};int objA0..m_A0=10;class objA1{private: int m_A1; //********3********public: objA1(int i) { m_A1=i; }};int func(objA1&obj){ //********4********}int main(){ objA1 obj 0(10); cout<<func(obj0)<<endl; return 0;}
【正确答案】正确答案:(1)添加语句:class objA1; (2)添加语句:friend int func(objA1&obj); (3)添加语句:friend int func(objA1&obj); (4)添加语句:return obj.m_A1*objA0::m_A0;
【答案解析】解析:(1)类的声明格式为:“class<类名>;”,因此第1个标识下应添加“class objA1;”。 (2)按照友元的定义格式,友元函数是在类声明中由关键字friend修饰的非成员函数,func函数在类外部给出了具体的实现形式,即“int func(objA1&obj)”,因此第2个标识下应添加“friend int func(objA1&obj);”,这里参数是0bjA1类对象obj。 (3)第3个标识下和题目2要求一样,均是声明友元函数,因此第2标识下应添加“friend intfunc(objA1&obj);”。 (4)通过参数obj对象可以直接访问obj.m A1,objA0的静态变量m_A0是所有对象的共享成员,其访问形式为:objA0::m A0,因此第4个标识下应添加“return obj.m_A1*objA0::m_A0;”。