使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能: (1)完成CMyClass的构造函数,请改正注释//********1********后的错误。 (2)

admin2021-09-05  52

问题 使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:
    (1)完成CMyClass的构造函数,请改正注释//********1********后的错误。
    (2)完成func()函数定义,请改正注释//********2********后的错误。
    (3)初始化CmyClass的成员变量Number3为4,请改正注释//********3********后的错误。
    (4)完成func0函数,请改正注释//********4********后的错误。
    输出的结果为:
    Number1=12
    Number2=18
    Nurnber3=16
    Number1=4
    Number2=2
    Number3=19
    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
    1  #include
    2  class CMyClass
    3  {
    4 public:
    5    //********1********
    6    CMyClass(int i,int j)
    7    {
    8    Numberl=i;
    9    Number3+=i;
    10    }
    1i    void display()
    12    {
    13    cout<<"Number1="<    14    cout<<"Number2="<    15    cout<<"Number3="<    16    }
    17    void AddNum(int i)
    18    {
    19    Number3 +=i;
    20    }
    21   private:
    22    int Numberl;
    23    const int Number2 ;
    24    stat ic int Number3;
    25    //********2********
    26
    27    };
    28    //********3********
    29
    30    void func()
    31    {
    32    CMyClass obj(1,2);
    33    obj.Numberl=4 ;
    34    //********4********
    35    obj.AddNum();
    36    obj.di splay();
    37  }
    38  void mein()
    39  {
    40    CMyClass myObj(12,18);
    41    myObJ.display();
    42    func();
    43    return;
    44    }

选项

答案(1)将“CMyClass(int i,int j)”补充完整为:CMyClass(int i,int j):Number2(j) (2)添加语句:friend void func(); (3)添加语句:int CMyClass::Number3=4: (4)将“obj.AddNum( )”补充完整为:obj.AddNum(2);

解析 程序中定义了CMyClass类,其含有3个成员变量和多个成员函数,成员变量Number2为常成员,Number3为静态成员。display()数输出3个成员变量的值,AddNum(inti)函数改变静态成员变量Number3的值,在函数func()内部,访问了类的私有成员,而且func()不属于类的成员函数,故函数func()为类cmyclass的友元函数。
    [解题思路]
    (1)第1个标识下完成类的构造函数初始化类的成员变量,常成员也必须初始化,并且不能被更新,常数据成员的初始化只能通过构造函数的成员初始化类表进行,因此第1个标识下应为“CMyClass(int i,int j):Number2(j)”,i用来初始化Number1和Number3,i初始化Number2。
    (2)第2个标识下完成func0的函数定义,由审题分析可知,函数func()为类的友元,故第2个标识下应为“friendvoid func0;”。
    (3)第3个标识下是静态成员的初始化,静态数据成员的初始化格式为:<数据类型><类名>::<静态数据成员>=<初始值>,因此第3个标识下应为“int CMyClass::Number3=4;”0
    (4)成员函数AddNum()带有一个整型参数,因此调用此函数时必须有参数传入,可由程序运行结果分析得知传入的参数值的大小。在fun()函数内,定义CMyClass obj(1,2)后,obj.Numberl=l,obj.Number2=2,Number3=16+1=17,obj.Numberl=4,Number1为4,obj.Number2为常成员其值不会改变,调用AddNum0函数后调用显示函数显示成员变量值,可知Number3为19,因此AddNum0的参数为19.17=2,即第4个标识下应为“obj.AddNum(2);”
转载请注明原文地址:https://jikaoti.com/ti/1Mh0FFFM
0

最新回复(0)