使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)声明类objAl,请在注释//********1********后添加适当的语句。 (2)为类ob

admin2021-02-22  29

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
    (1)声明类objAl,请在注释//********1********后添加适当的语句。
    (2)为类objA0增加友元函数func(),请在注释//********2********后添加适当的语句。
    (3)为类objAl增加友元函数func(),请在注释//********3********后添加适当的语句。
    (4)函数funcO返回objAl对象中的变量和0bjA0的静态变量的乘积,请在注释//********4********后添加适当的语句。
    注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
    1  #include
    2    //********1********
    3
    4   class objA0
    5   {
    6   private:
    7    static int m_A0;
    8    //********2********
    9
    10    };
    11   int objA0::m_A0=10 ;
    12  class objAl
    13    {
    14    private:
    15    int m_A1 ;
    16    //********3********
    17
    18   public:
    19    obj A1(int i)
    20    {
    21   m_A1=i ;
    22    }
    23    };
    24    int func(objAl&obj)
    25    {
    26    //********4********
    27
    28    }
    29    int mein()
    30    {
    31    objA1 obj 0(1 0);
    32    COUt<    33    return 0 ;
    34    }

选项

答案(1)添加语句:C1ass obj A1; (2)添加语句:friend int func(obj A1&obj); (3)添加语句:friend int func(objAl&obj); (4)添加语句:return obj.m A1*obj A0::m A0 ;

解析 友元提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制,友元不是本类的成员函数,在它的函数体内部可以通过对象名来访问类的私有成员和保护成员。友元函数是在类声明中由关键字friend修饰的非成员函数。func()函数为类0bjAl的友元,因此可以通过对象名直接访问到objAl的私有成员变量。
    [解题思路]
    (1)类的声明格式为:“class<类名>:”,因此第1个标识下应添加“class obiAl;”。
    (2)按照友元的定义格式,友元函数是在类声明中由关键字friend修饰的非成员函数,func函数在类外部给出了具体的实现形式,即“int func(objAl&obj)”,因此第2个标识下应添加“friend int func(objAl&obj);”,这里参数是objAl类对象obi。
    (3)第3个标识下和题目2要求一样,均是声明友元函数,因此第2标识下应添加“friend int func(0bjAl&obj);”。
    (4)通过参数Obj对象可以直接访问obj.mA1,objA0的静态变量m A0是所有对象的共享成员,其访问形式为:objA0::m A0,因此第4个标识下应添加“retum obj.m Al*objA0::m_A0;”。
转载请注明原文地址:https://kaotiyun.com/show/c1fp777K
0

最新回复(0)