itgle.com

使用VC++6.0打开考生文件廷下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为 TCA TCB TCC (1)完成类B虚继承于A,请在注释1后添加适当的语句。 (2)完成类C虚继承于A,请在注释2后添加适当的语句。 (3)完成类D继承于B,C,请在注释3后添加适当的语句。 (4)函数fun通过调用基类的fun,完成所输出的内容,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: in

题目

使用VC++6.0打开考生文件廷下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整,使其输出的结果为 TCA TCB TCC (1)完成类B虚继承于A,请在注释1后添加适当的语句。 (2)完成类C虚继承于A,请在注释2后添加适当的语句。 (3)完成类D继承于B,C,请在注释3后添加适当的语句。 (4)函数fun通过调用基类的fun,完成所输出的内容,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: include<iostream.h> classTCA { public: voidfun { cout<<"TCA"<<endl; } }; //********1********classTCB { public: voidfun { cout<<"TCB"<<endl; } }; //********2********classTCC { public: voidfun { cout<<"TCC"<<endl; } }; //********3********classTCD { public: voidfun { //********4********} }; voidmain { TCDtest; test.fun; return; };


相似考题
更多“使用VC++6.0打开考生文件廷下的源程序文件3.cpp。其中定义的类并不完整,按要求完成下列操作,将类 ”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程MyProj2。此工程包含一个源程序文件 MyMain2.cpp,此程序的运行结果为:

    Derive1's Print() Called.

    Derive2's Print() called.

    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。

    ①定义函数Print()为无值型纯虚函数。请在注释“//**1**”之后添加适当的语句。

    ②建立类Derivel的构造函数,请在注释“//**2**”之后添加适当的语句。

    ③完成类Derive2成员函数Print()的定义。请在注释“//**3**”之后添加适当的语句。

    ④定义类Derivel的对象指针d1,类Derive2的对象指针d2。其初始化值分别为1和2。

    源程序文件MyMain2.cpp中的程序清单如下:

    //MyMain2. cpp

    include <iostream>

    using namespace std;

    class Base

    {

    public:

    Base(int i)

    {

    b=i;

    }

    //* * 1 * *

    protected:

    int b;

    };

    class Derivel: public Base

    {

    public:

    //* * 2 * *

    void print ()

    {

    cout<<" Derivel's Print() called."<<end1;

    }

    };

    class Derive2 : public Base

    {

    public:

    Derive2(int i) :Base(i) { }

    //* * 3 * *

    };

    void fun (Base *obj)

    {

    obj->Print ();

    }

    int main ( )

    {

    //* * 4 * *

    fun (d1);

    fun (d2);

    return 0;

    }


    正确答案:①virtual void Print()=0; ②Derivel(int i):Base(i){} ③void Print(){cout"Derive2's Print()called."end1;} ④Derivel*d=new Derive1(1);Derive2*d2=new Derive2(2)
    ①virtual void Print()=0; ②Derivel(int i):Base(i){} ③void Print(){cout"Derive2's Print()called."end1;} ④Derivel*d=new Derive1(1);Derive2*d2=new Derive2(2) 解析:本题是一道综合应用题,考核继承与派生,以及纯虚函数。
    ①在第1处定义函数Print()为无值型纯虚函数。根据C++中无纯虚函数的定义格式可知在第1处应填入“virtual void Print()=0;”。
    ②在第2处建立类Derivel的构造函数,其中还要调用基类的构造函数。所以应填入“Derivel(int i):Base(i){}”。
    ③在第3处完成类Derive2成员函数Print()的定义,根据程序的输出可知,此处应填入“void Print(){cout"Derive2's Print() called.”end1;}。
    ④在第4处定义类Derive1的对象指针d1,类Derive2的对象指针d2,其初始化值分别为1和2。所以应填入“Derive1 *d=new Derive1(1);Derive2 *d2=new Derive2(2)”。

  • 第2题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成类的构造函数功能,请在注释1后添加适当的语句。 (2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。 (3)定义类的友元函数fun,请在注释3后添加适当的语句。 (4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。 注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。 试题程序: include<iostream.h> classPeople { public: //********1******** { inti; for(i=0;sUserName[i]!=0;i++) {m_UserName[i]=sUserName[i]; } //********2******** m_Old=nOld; } private: charm_UserName[32]; intm_Old; //********3******** }; voidfun(char*s,People&personl,People&person2 { //********4******** if { for(inti=0;personl.m_UserName[i]!=0;i+ +) { s[i]=personl.m_UserName[i]; s[i+1]=0; } } else { for(inti=0;person2.m_UserName[i]!=0;i+ +) {s[i]=person2.m_UserName[i]; s[i+1]=0; } } } voidmain { chars[32]; Peoplepl("abc",20); Peoplep2("def",30): fun(S,p1,p2); cout<<s<<endl: return; }


    正确答案:
    (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)”。

  • 第3题:

    使用VC++6.0打开考生文件夹下的源程序文件3.cpp。程序通过继承关系,实现对姓名的控制。类TC1实现对名字访问的接口,TC2实现对名字的设置和输出。

    程序输出为

    TC2Name

    May

    其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。

    (1)在类TCl中定义接口函数GetName为纯虚函数。请在注释1后添加适当的语句。

    (2)函数GetName2用于获得名字的缓存,但只获得允许读操作这个缓存,请在注释2后添加适当的语句。

    (3)实现TC2的构造函数,请在注释3后添加适当的语句。

    (4)完成TC2的构造函数,实现对名字的处理。请在注释4后添加适当的语句。

    注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。

    试题程序:

    include<iostream.h>

    classTC1

    {

    public:

    //********1********

    };

    classTC2:publicTCl

    {

    public:

    voidGetName

    {

    cout<<"TC2Name"<<endl;

    }

    //********2********

    {

    returnm_str;

    }

    //********3********

    {

    inti:

    for(i=0;str[i]!=0;i++)

    m_str[i]=str[i];

    //********4********

    }

    private:

    charm_str[32];

    };

    voidmain

    {

    TCl*P;

    TC20bj1("May");

    p=&objl;

    p->GetName;

    cout<<obj1.GetNamc2<<endl;

    return;

    }


    正确答案:

    (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;”。


  • 第4题:

    使用VC6打开考生文件夹下的工程MyProj12。此工程包含一个源程序文件MyMain12.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。

    请按要求完成下列操作,将类的定义补充完成:

    ①类Derived是基类Base公有派生来的。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数Derived(int x)定义,采用初始化列表的方式使基类Base私有成员a初始化为x,类Derived的私有成员b初始化为x+1。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Derived的成员函数show()的类体外的定义。函数show()中要输出基类数据成员a的值,然后要输出私有成员b的值。请在注释“//* *3* *之后添加适当的语句。

    注意;除在指定位置添加语句之外,请不要改动程序中的其他内容。

    源程序文件MyMain12.cpp清单如下:

    //MyMain12.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    public:

    int a;

    Base(int i)

    {

    a=i;

    }

    };

    //* * * 1 * * *

    {

    private:

    int b;

    public:

    //* * * 2 * * *

    void show();

    };

    void Derived::show()

    {

    //* * * 3 * * *

    }

    int main()

    {

    Derived d(1);

    d.show();

    return 0;

    }


    正确答案:

  • 第5题:

    使用VC6打开考生文件夹下的工程MyProj10。此工程包含一个源程序文件MyMain10.cpp。程序中定义了两个类Base和Derived,但类的定义并不完整。

    请按要求完成下列操作,将类的定义补充完成:

    ①类Derived是基类Base公有派生来的。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数Derived(int i)定义,采用初始化列表的方式使基类Base私有成员a初始化为i+1,类Derived的私有成员b初始化为i。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Derived的成员函数show()的类体外的定义。函数show()中要显式调用基类的show()函数,然后要输出私有成员b的值。请在注释“//* *3**”之后添加适当的语句。

    注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    源程序文件MyMain10.cpp清单如下:

    //MyMain10.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    public:

    Base(int x)

    {

    a=x

    }

    void show()

    {

    cout<<a;

    }

    private:

    int a;

    };

    //* * *1* * *

    {

    public:

    //* * * 2 * * *

    void show();

    private:

    int b;

    };

    void Derived :: show()

    {

    //* * * 3 * * *

    }

    int main()

    {

    Derived d(1), *pb;

    pb=&d;

    pb->show();

    return 0;

    }


    正确答案: