使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句;(2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句;(3)完成成员函

题目

使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。

(1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句;

(2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句;

(3)完成成员函数copy(File & source,File & target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在注释“//**3**”之后添加适当的语句:

(4)完成析构函数的定义,要求释放content指向的空间。请在注释“//**4**”之后添加适当的语句。

输出结果如下:

file2:file1 contents

file2:file2 contents

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

源程序文件testl4—3.cpp清单如下:

include<iostream.h>

include<string.h>

class File{

private:

char file_name[64];

char*contents;

public:

File(char*filename)

{

// ** 1 **

};

File::~File()

{

// ** 4 **

}

void printfile(){cout<<file_name<<":"<<contents<<endl;)

friend bool copy(File & source,File & target);

bool set_contents(char * new_contents);

};

bool File::set_contents(char*new_contents)

{

// ** 2 **

if(contents==NULL)

return false;

strcpy(contents,new_contents);

return true;

}

bool copy(File & source,File & target)

{

// ** 3 **

}

void main{)

{

File f1("filel"),f2("file2");

f1.set_contents("filel contents");

copy(f1,f2);

f2.printfile();

f2.set_contents("file2 contents,);

f2.printfile();

}


相似考题

2.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。 (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//********1********”之后添加适当的语句。 (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传人。请在注释“//********2********”之后添加适当的语句。 (3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//********3********”之后添加适当的语句。 (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值在输出时以空格隔开。请在注释“//********4********”之后添加适当的语句。 程序输出结果如下: 7 3 738 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。 试题程序: include<iostream.h> classA { inta; public: //********1******** intgeta{returna;} }; classA1:publicA { intb; public: //********2******** intgetb{returnb;} }; classA2:publicA1 { intC; public: //****,****3******** voidshow { //********4******** } }; voidmain { A2a(8.3.7): cout<<a.geta<<endl: cout<<a.getb<<endl: a.show; }

更多“使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。(1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句;(2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句;(3)完成成员函”相关问题
  • 第1题:

    使用VC6打开考生文件夹下的工程MyProj7。此工程包含一个源程序文件MyMain7.cpp。其中定义了类Sample,但类Sample的定义并不完整。

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

    ①定义私有数据成员n,它是int型的数据。请在注释“//* *1**”之后添加适当的语句。

    ②完成重载构造函数Sample()的定义,使Sample对象的默认值:n=0。请在注释“//* *2* *”之后添加适当的语句。

    ③完成成员函数add()的类体内的定义,使成员函数返回的Sample对象的值n为两类Sample对象s1和s2的私有成员n的和。请在注释“//* *3* *”之后添加适当的语句。

    ④完成成员函数disp()的类外定义,使其以“n=”的格式将Sample对象的值输出到屏幕上。请在注释“* *4* *”之后添加适当的语句。

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

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

    //MyMain7.cpp

    include<iostream>

    using namespace std;

    class Sample

    {

    private:

    //* * 1* *

    public:

    Sample(){}

    //* *2* *

    Sample add(Sample s1,Sample s2)

    {

    //* *3* *

    }

    void disp();

    };

    void Sample: :disp()

    {

    //* * 4 * *

    }

    int main()

    {

    Sample s1(10),s2(5),s3;

    cout<<"s1:";

    s1.disp();

    cout<<"\n S2:";

    s2,disp();

    s3.add(s1,S2);

    cout<<"\n s3.add(s1,s2)\n s3:";

    s3.disp();

    return 0;

    }


    正确答案:

  • 第2题:

    使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。

    (2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。

    (3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。

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

    include<iost ream. h>

    class Letter

    {

    protected:

    char ch;

    public:

    // ** 1 **

    };

    class Number

    {

    protected:

    int num;

    public:

    // ** 2 **

    };

    class Grid : public Letter, public Number

    {

    public:

    // ** 3 **

    friend ostream& operator<<(ostream &o,Grid &g);

    };

    // ** 4 **

    {

    o << "[" << g.ch << ", "<< g.num << "]";

    return o;

    }

    int main ( )

    {

    Grid g('C', 3);

    cout << "Grid reference: "<< g << end1;

    return 0;

    }


    正确答案:(1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A'int n=0):Letter(c)Number(n){} (4) ostream &operator(ostream &oGrid &g)
    (1) Letter(char c='A'){ch=c;} (2) Number(int n=0){num=n;} (3) Grid(char c='A',int n=0):Letter(c),Number(n){} (4) ostream &operator(ostream &o,Grid &g) 解析:主要考查考生对于类和派生类的构造函数的定义以及重载为友元的运算符函-数的定义的掌握,其中(3)使用了参数列表进行变量赋值,这是派生类构造函数中经常使用的,(4)对于友元函数在类体外的定义不需要使用作用域符,而ostream类的对象引用可直接使用原来意义的符号“”进行输出。

  • 第3题:

    使用VC6打开考生文件夹下的工程test13_3。此工程包含一个test13_.cpp,其中定义了类Vector,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成员buffer指向动态申请的int型size大小的空间。请在注释“//**1**”之后添加适当的语句。

    (2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“//**2**”之后添加适当的语句。

    (3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果ndx超界,请输出“error in index”。请在注释“//**3**”之后添加适当的语句。

    (4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释“//**4**”之后添加适当的语句。

    输出结果如下:

    1234567891012345678910dd

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

    源程序文件test13_3清单如下:

    include<iostream.h>

    include<stdlib.h>

    class Vector

    {

    public:

    Vector(int s=100);

    Vector(Vector &v);

    int &elem(int ndx);

    void display();

    void set();

    ~Vector();

    protected:

    int size;

    int *buffer;

    };

    Vector::Vector(int s)

    {

    // ** 1 **

    }

    Vector::Vector(Vector &v)

    {

    // ** 2 **

    for(int i=0; i<size; i++)

    {

    *(buffer+i)=*(v.buffer+i);

    }

    }

    int &Vector::elem(int ndx)

    {

    // ** 3 **

    {

    cout<<"error in index"<<endl;

    exit(1);

    }

    return buffer[ndx];

    }

    void Vector::display()

    {

    for(int j=0;j<size;j++)

    cout<<elem(i)<<endl;

    }

    void Vector::set()

    {

    for(int j=0;i<size;j++)

    elem(j)=j+1;

    }

    Vector::~Vector()

    {

    // ** 4 **

    }

    void main()

    {

    Vector a(10);

    Vector b(a);

    a. set();

    b. set();

    a. display();

    b. display();

    }


    正确答案:(1) size=s; buffer=new int[size]; (2) size=v.size; buffer=new int[size]; (3) if(ndxO||ndx>=size) (4) cout"d"endl; delete[]buffer;
    (1) size=s; buffer=new int[size]; (2) size=v.size; buffer=new int[size]; (3) if(ndxO||ndx>=size) (4) cout"d"endl; delete[]buffer; 解析:本题主要考查考生对于类的构造函数与成员函数定义的掌握,注意(2)中赋值的应用,为了防止重复删除,不能直接将指针赋值,必须使用动态申请new建立一块新的空间,并且将原来对象的成员全部复制到新的空间中:(4)中对动态一维数组空间删除的时候,应该使用delete关键字,并不管原数组大小是多少,一律只写一对中括号“[]”加上变量名。

  • 第4题:

    使用VC6打开考生文件夹下的工程test36_3。此工程包含一个test36_3.cpp,其中定义了类CRectangle,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类CRectangle的数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)添加类CRectangle的友元函数duplicate()的声明,其返回值类型和参数类型均为Crectangle的,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Crectangle的成员函数set_values的定义,把传入的参数a和b分别赋值为数据成员width和height,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类Crectangle的友元函数duplicate的定义,把函数中的临时对象rectres的值返回主函数,请在注释“//** 4**”之后添加适当的语句。

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

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

    include <iostream.h>

    class CRectangle

    {

    // ** 1 **

    public:

    void set_values (int, int);

    int area (void) {return (width * height);}

    // ** 2 **

    };

    void CRectangle::set_values (int a, int b)

    {

    // ** 3 **

    }

    CRectangle duplicate (CRectangle rectparam)

    {

    CRectangle rectres;

    rectres.width = rectparam.width*2;

    rectres.height = rectparam.height*2;

    // ** 4 **

    }

    void main ( )

    {

    CRectangle rect, rectb;

    rect.set_values (2,3);

    rectb - duplicate (rect);

    cout << rectb.area()<<end1;

    }


    正确答案:(1) int widthheight; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres);
    (1) int width,height; (2) friend CRectangle duplicate(CRectangle); (3) width=a; height=b; (4) return(rectres); 解析:主要考查考生对于类的定义和友元函数的掌握,其中(2)中friend是定义友元的关键字,注意声明之后的分号不能缺少(4)中从子函数中返回应该使用关键字return,只要符合返回类型的要求就可以直接使用return返回。

  • 第5题:

    使用VC6打开考生文件夹下的工程test28_3。此工程包含一个test28_3.cpp,其中定义了类Person,但该类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类Person的私有数据成员forename、surname 和 money,forename 和 surname都是char型的指针数据,money是double型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)完成类Person的带三个参数的构造函数Person(char *f, char *s,double m),分别为forename和surname申请新的空间来存储参数f和s指针指向的内容,注意空间的大小,最后把参数m的值赋给money,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Person的析构函数的定义,把forename和surname指向的空间释放,请在注释“//**3**”之后添加适当的语句。

    (4)完成类Person的成员函数display的定义,使其以格式“forname surname has money”的形式输出内容,请在注释“//**4*。”之后添加适当的语句。

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

    输出结果如下:

    Richard Berk has 1000.56

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

    include <iostream.h>

    include <string.h>

    class Person

    {

    private:

    //** 1 **

    double money;

    public:

    Person(char *f, char *s, double m);

    ~Person();

    void display();

    };

    Person::Person(char *f, char *s, double m)

    {

    //** 2 **

    strcpy(forename, f);

    surname = new char[strlen(s)+1];

    strcpy(surname, s);

    money=m;

    }

    Person: :-Person ()

    {

    //** 3 **

    }

    void Person:: display ( )

    {

    //** 4 **

    }

    void main ( )

    {

    Person p("Richard", "Berk", 1000.56);

    p.display ( );

    }


    正确答案:(1) char *forename; char *surname; (2) forename = new char[strlen(f)+1]; (3) delete []forename; delete []surname; (4) coutforename" "surname"has"moneyend1;
    (1) char *forename; char *surname; (2) forename = new char[strlen(f)+1]; (3) delete []forename; delete []surname; (4) coutforename" "surname"has"moneyend1; 解析:主要考查考生对于类的定义和字符指针的动态空间申请和释放的掌握,具中(2)中new关键字是动态申请空间,里面使用了函数strlen,该函数是返回参数字符串的长度,之所以加一是要加入字符串结尾标志,这一点考生切记。(3)中 delete是释放动态内存的关键字,释放一位数组占用的内存格式是先写[],之后是指针名,括号内不写数组的大小。

  • 第6题:

    使用VC6打开考生文件夹下的工程MyProj15。此工程包含一个源程序文件MyMain15.cpp。程序中定义了3个类A、B和C,但类的定义并不完整。

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

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

    ②完成类Inherit成员函数setvalue(int a,int b,int c,int d)的定义,此函数实现的功能是将基类成员x、y、z和派生类的数据成员m的值分别设置成a、b、c和d。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类Inherit成员函数display()的类体外定义,此函数实现的功能是以“,,,,”的格式将x、y、z和m的值输出到屏幕上。请在注释“//* *3* *”之后添加适当的语句。

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

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

    //Mymain15.cpp

    include<iostream>

    using namespace std;

    class Base

    {

    private:

    int x;

    protected:

    int y;

    public:

    int z;

    void setx(int i)

    {

    x=i;

    }

    int getx()const

    {

    return x;

    }

    };

    //* * *1* * *

    {

    private:

    int m;

    public:

    void setvalue(int a,int b,int c,int d)

    {

    //* * *2* * *

    }

    void display()const;

    };

    //* * *3* * *

    int main()

    {

    Inherit A;

    A.setvalue(1,2,3,4);

    A.display();

    return 0;

    }


    正确答案:

  • 第7题:

    使用VC6打开考生文件夹下的工程test2_3。此工程包含一个test2_3.cpp,其中定义了类Stud,但类的定义并不完整。请按要求完成—下列操作,将程序补充完整。

    (1)定义类的公有数据成员no,name[10],其中no是int型的数据,name[10]是字符型一维数组。请在注释“//**1**”之后添加适当的语句。

    (2)完成函数set的定义,分别将参数n,na的值赋给数据成员no,name。注意:请使用this指针完成对no的赋值,使用字符串函数实现对name和cname的赋值。请在注释“//**2**”之后添加适当的语句。

    (3)完成类的成员函数disp的定义,使其按no,deg,name和cname的顺序输出类的数据成员的值,中间使用跳格符分隔,请在注释“//**3**”之后添加适当的语句。

    输出结果如下:

    1 李华 95 990701

    2 王东 83 990702

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

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

    include<iostream.h>

    include<string.h>

    class Stud

    {

    public:

    // ** 1 **

    int deg;

    char cname[10];

    Stud(){}

    void set(int n,char na[],int d,char cn[])

    {

    // ** 2 **

    deg=d;

    strcpy(cname,cn);

    }

    void disp()

    {

    // ** 3 **

    }

    };

    void main()

    {

    Stud obj[2];

    obj[0].set(1,,"李华",95,"990701");

    obj[1].set(2,"王东",83,"990702");

    obj[0].disp();

    obj[1].disp();

    }


    正确答案:(1) int no; char name[10]; (2) this->no=n; strcpy(namena); (3) coutno"\t"name"\t"deg"\r"cnameendl;
    (1) int no; char name[10]; (2) this->no=n; strcpy(name,na); (3) coutno"\t"name"\t"deg"\r"cnameendl; 解析:主要考查考生对于对象定义、this指针和字符串函数的使用。this指针是指向正在被某个成员函数操作的对象的指针,需要使用->调用其他的函数,strcpy是字符串复制函数,作用是将第二个参数赋值给第一个参数。

  • 第8题:

    使用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;

    }


    正确答案:

  • 第9题:

    使用VC6打开考生文件夹下的工程test18_3,此工程包含一个源程序文件test18_3.cpp,其中定义了用于表示雇员的类 Employee,但类Employee的定义并不完整。请按要求完成下列操作,将类Employee的定义补充完整。

    (1)补充类Employee的构造函数,请使用字符串函数将数据成员name,address,city,province和zipcode分别初始化为参数*nm,*addr,*city,*prov和*zip的值。请在注释“//**1**”之后添加适当的语句;

    (2)完成类Employee的成员函数ChangeName(char * newName)的定义,将newName指向的内容赋值给数据成员name,请在注释“//**2**”之后添加适当的语句;

    (3)完成类Employee的成员函数Display()的定义,先使用指针buffer动态申请一个char型的200单位大小的空间,然后使用字符串函数将数据成员name和address依次复制其中,最后返回该指针buffer,将请在注释“//**3**”之后添加适当的语句。输出结果如下:

    王东建国路大街105号

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

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

    include <iostream.h>

    include <string.h>

    class Employee{

    protected:

    char name[20];

    char address[100];

    char city[20];

    char province[20];

    char zipcode[10];

    public:

    Employee(char *nm, char *addr,char *city, char *prov, char *zip);

    void ChangeName(char *newName);

    char *Display();

    };

    Employee::Employee(char *nm, char *adr, char *cit, char *prov, char *zip)

    {

    //**1**

    strcpy(city, cit);

    strcpy(province,prov);

    strcpy(zipcode,zip);

    }

    void Employee::ChangeName(char * newName)

    {

    //**2**

    }

    char *Employee::Display()

    {

    //**3**

    strcat(buffer, address);

    return buffer;

    }

    void main()

    {

    Employee emp("李华","建国路大街105号","石家庄","河北","103400");

    emp. ChangeName ("王东");

    cout<<emp.Display()<<end1;

    }


    正确答案:(1) strcpy(namenm); strcpy(addressadr); (2) strcpy(namenewName); (3) char *buffer=new char[200]; strcpy(buffername);
    (1) strcpy(name,nm); strcpy(address,adr); (2) strcpy(name,newName); (3) char *buffer=new char[200]; strcpy(buffer,name); 解析:本题主要考查考生对于类的定义和字符串函数的灵活运用。算法如下:先使用strchr函数将名字中的空格找到,然后替换成为字符串结束标志,接着使用strcpy函数将被切断的字符串后面的部分复制到一个新的字符串newName中,再使用strcat函数连接“,”和原字符串的前半部分。

  • 第10题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示坐标的类TestClass1,但类TestClass1的定义并不完整,按要求完成下列操作,将类的定义补充完整。  1.声明TestClass2类为TestClass1类的友元类,请在注释∥********1********后添加适当的语句。  2.完成类的构造函数,分别对成员变量赋值,请在注释∥********2********后添加适当的语句。  3.完成类的构造函数,分别对成员变量赋值,请在注释∥********3********后添加适当的语句。  4.完成计算平面上两点之间的距离函数Distance,计算的方法如下:X坐标之差的平方与Y坐标之差的平方之和的开方。请在注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    正确答案: 1.添加语句:friend class TestClass2:
    2.添加语句:TestClass1(float a,float b)
    3.添加语句:TestClass1(float a)
    4.添加语句:result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)(p.Y-q.Y));
    解析:1.题目1要求“声明TestClass2类为TestClass1类的友元类”。C++中声明友元类的一般形式为friend类名:,所以这里补全“friend class TestClass2:”。
    2.题目2要求“完成类的构造函数,分别对成员变量赋值”。程序中TestClass1类的构造函数缺少定义,构造函数首部的一般格式为:构造函数名(类型1形参1,类型2形参2,……),所以在第2个标识下补全“TestClass1(float a,float b)”。
    3.题目3要求“完成类的构造函数,分别对成员变量m值”。同理,第三个标识下补全“TestClass1(float a)”。
    4.题目4要求“完成计算平面上两点之间的距离函数Distance”。题目中已经给出了计算方法,x坐标之差的平歹与y坐标之差的平方之和的开方。利用C++中的开方函数sqrt补全函数中的两点之间的距离,即“result=sqrt((p.X-q.X)*(p.X-q.X)+(p.Y-q.Y)(p.Y-q.Y));”。
    解析: 暂无解析

  • 第11题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:  1.定义类CPoint的带有两个参数的构造函数,两个变量为x、y都为int型,且缺省值为0。请在注释//********1********料料料后添加适当的语句。  2.完成类CRectangle的构造函数,给point1和point2进行赋值。请在注释//********2********后添加适当的语句。  3.完成类CRectangle的函数GetArea(),用来计算矩形面积。请在注释//********3********后添加适当的语句。  4.定义CRectangle类,拥有两个私有对象point1和point2,类型为Point,请在注释//********4********后添加适当的语句。  注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。

    正确答案: 1.添加语句:“CPoint(int i=0,int j=0)”
    2.添加语句:“CRectangle(int top,int left,int right,int bottom): point1(top,left), point2(right,bottom)”
    3.添加语句:“int width=point1.GetX()-point2.GetX();”
    4.添加语句:“CPoint point1;”
    解析:1.在第1个标识下添加构造函数,该构造函数带有两个整型参数x和y,缺省值为0,因此第1个标识下应添加语句:“CPoint(int i=0,int j=0)”。
    2.第2个标识下通过CPoint类的构造函数来完成CRectangle类成员的初始化,构造初始化列表完成对变量的初始化,故第2个标识下应添加语句:“CRectangle(int top,int left,int right,int bottom):point1(top,left),point2(right,bottom)”。
    3.矩形面积为矩形长和宽的乘积,两个CPoint对象的x坐标相减的绝对值为矩形的宽,CPoint对象的x坐标为私有成员,只能通过公有接口函数调用获得,因此第3个标识下添加语句:“int width=point1.GetX()-point2.GetX();”。
    4.CRectangle类的成员变量为两个Cpoint对象成员point1和point2,第4个标识下补充类对象point1的定义,故第4个标识下应添加语句:“CPoint point1;”。
    解析: 暂无解析

  • 第12题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:  1.声明类objA1,请在注释∥********1********后添加适当的语句。  2.为类objA0增加友元函数func(),请在注释∥********2********后添加适当的语句。  3.为类objA1增加友元函数func(),请在注释∥********3********后添加适当的语句。  4.函数func()返回objA1对象中的变量和objA0的静态变量的乘积,请在注释∥********4********后添加适当的语句。  注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。

    正确答案: 1.添加语句:“class objA1;”
    2.添加语句:“friend int func(objA1&obj);”
    3.添加语句:“friend int func(objA1&obj);”
    4.添加语句:“return obj.m_A1*objA0::m_A0;”
    解析:1.类objA0中引用objA1的成员对象,因此需要在类objA0前添加类objA1的声明,第1个标识下应添加语句:“class objA1;”。
    2.友元函数是在类声明中由关键字friend修饰的非成员函数,func()函数在类外部给出了具体的实现形式,即“int func(objA1&obj)”,因此第2个标识下应添加语句:“friend int func(objA1&obj);”,这里参数是obiA1类的对象obj。
    3.声明友元函数,因此第3标识下应语句:“friend int func(objA1&obj);”。
    4.类objA1的对象obj对象可以直接访问obj.m_A1,objA0的静态变量m_A0是所有对象的共享成员,其访问形式为:objA0::m_A0,因此第4个标识下应添加语句:“return obj.m_A1*objA0::m_A0;”。
    解析: 暂无解析

  • 第13题:

    使用VC6打开考生文件夹下的工程test42_3。此工程包含—个test42_3.cpp,其中定义了类Cpolygon、COutput和CTriangle,其中CTriangle类由Cpolygon和COutput类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类CPolygon的保护数据成员width和height,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)完成类CPolygon的成员函数set_values(int a,int b),使参数a和b分别赋值给保护数据成员width和height,请在注释“//**2**”之后添加适当的语句。

    (3)完成类Coutput的成员函数output(int)的定义,将传入的参数为血型的i输出到屏幕并换行,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类CTriangle的声明,它由Cpolygon和COutput类public派生,请在注释“//**4**”之后添加适当的语句。

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

    include <iostream.h>

    class CPolygon

    {

    protected:

    // ** 1 **

    public:

    void set_values(int a, int b)

    {

    // ** 2 **

    }

    };

    class COutput

    {

    public:

    void output(int i);

    };

    void COutput::output(int i)

    {

    // ** 3 **

    }

    // ** 4 **

    {

    public:

    int area (void)

    {

    return (width * height / 2);

    }

    }

    int main ()

    {

    CTriangle trgl;

    trgl.set_values (4,5);

    trgl.output (trgl.area());

    return 0;

    }


    正确答案:(1) int width height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon public Coutput
    (1) int width, height; (2) width=a; height=b; (3) cout i endl; (4) class CTriangle:public CPolygon, public Coutput 解析:主要考查考生对于类的定义和派生类声明的掌握,其中(4)中对于多继承的声明按照如下的格式:关键字class派生类名:继承方式继承类名,继承方式继承类名,在多继承中,一定要注意防止程序的二义性,同时要善于利用基类中已经定义的方式,才能达到代码复用的作用。

  • 第14题:

    使用VC6打开考生文件夹下的工程test30_3。此工程包含一个test30_3.cpp,其中定义了类A、A1和A2,其中A1类由 A类公有派生,A2类由A1类公有派生。上述三个类的定义并不完整,请按要求完成下列操作,将程序补充完整。

    (1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据成员a。请在注释“//** 1**”之后添加适当的语句。

    (2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数值传入。请在注释“//**2**”之后添加适当的语句。

    (3)定义类A2的构造函数,该构造函数有三个整型的参数x,y和2,在构造函数中请将x赋值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和y。请在注释“//**3**”之后添加适当的语句。

    (4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“//**4**”之后添加适当的语句。

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

    程序输出结果如下:

    9

    6

    962

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

    include <iostream.h>

    class A

    {

    int a;

    public:

    //** 1 **

    int geta() {return a;}

    };

    class A1:public A

    {

    int b;

    public:

    //** 2 **

    int getb() {return b;}

    };

    class A2:public A1

    {

    int c;

    public:

    //** 3 **

    void show()

    {

    //** 4 **

    }

    };

    void main()

    {

    A2 a(2,6,9);

    cout<<a.geta ( ) <<end1;

    cout<<a, getb ( ) <<end1;

    a. show( );

    }


    正确答案:(1) A(int x){a=x;} (2) A1(int xint y):A(y){b=x;} (3) A2(int xint yint z):A1(yx){c=x;} (4) coutgeta()" "getb()" "; coutc"\n";
    (1) A(int x){a=x;} (2) A1(int x,int y):A(y){b=x;} (3) A2(int x,int y,int z):A1(y,x){c=x;} (4) coutgeta()" "getb()" "; coutc"\n"; 解析:本题主要考查考生对继承和派生的掌握程度,涉及派生类构造函数的定义、基类成员函数的访问等内容。派生类的构造函数的格式请牢记,另外派生类构造函数及析构函数的执行顺序也是需要掌握的。

  • 第15题:

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

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

    ①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。

    ②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。

    ③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。

    ④将类shapes的成员函数void disp()设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。

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

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

    //MyMain13.cpp

    include<iostream>

    using namespace std;

    class shapes

    {

    //* * *1* * *

    public:

    //* * *2* * *

    void setvalue(int d,int w)

    {

    //* * *3* * *

    }

    //* * * 4 * * *

    };

    class square : public Shapes

    {

    public:

    void disp()

    {

    cout<<x*y<<end1;

    }

    };

    int main()

    {

    shapes*ptr;

    square s1;

    ptr=&s1;

    ptr->setvalue(10,5);

    ptr->disp();

    return 0;

    }


    正确答案:

  • 第16题:

    使用VC6打开考生文什夹下的工程test1_3。此工程包含一个test1_3.cpp,其中定义了类circle和column,其中column类由circle类protected派生,但两个类的定义并不完整。请按要求完成下列操作,将程序补充完整。

    (1)定义类circle的保护数据成员r和area,它们都是double型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)添加类circle的无参数的构造函数,使circle对象的r默认值为0,请在汁释“//**2**”之后添加适当的语句。

    (3)添加派生类column构造函数的定义,传入的参数为double型的height和radius,并将具分别赋值给数擗成员h和基类的r,请在注释“//**3**”之后添加适当的语句。

    (4)完成派生类column的成员函数print的定义,使其以格式“r=_area=_”先输出半径r和底面积area,再以格式“h=_vol=_”输出高h和体积vol的值,请在注释“//**4**”之后添加适当的语句。

    输山结果如下:

    r=1 area=3.1416

    h=2 vo1=6.2832

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

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

    include<iostream.h>

    const double pi=3.1416;

    class circle

    {

    protected:

    //**1**

    public:

    //**2**

    circle(double radius){ r=radius;}

    void print()

    {

    area=r*r*pi;

    cout<<"r="<<r<<" "<<"area="<<ared<<endl;

    }

    };

    class column: protected circle

    {

    protected:

    double h;

    public:

    //** 3 **

    void print()

    {

    // ** 4 **

    }

    };

    void main()

    {

    column col(1.0,2.0);

    Col.print();

    }


    正确答案:(1) doubler; double area; (2) circle(){r=0;} (3) column(double radiusdouble height):circle(radius){h=height;} (4) circle::print(); cout"h="h" ""vol="area *hendl;
    (1) doubler; double area; (2) circle(){r=0;} (3) column(double radius,double height):circle(radius){h=height;} (4) circle::print(); cout"h="h" ""vol="area *hendl; 解析:主要考查考生对于类的数据成员定义与成员函数构造的掌握,其中(3)使用了参数列表进行变量赋值,(4)使用作用域符::调用基类print函数。

  • 第17题:

    使用VC6打开考生文件夹下的工程MyProj1。此工程包含千个源程序文件 MyMainl.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整。请按要求完成下列操作,将类Date的定义补充完成:

    ①定义私有数据成员year、month和day分别用于表示年、月、日,它们都是int型的数据。请在注释“//**1**”之后添加适当的语句。

    ②完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1, day=1,请在注释“//**2**”之后添加适当的语句。

    ③完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值,请在注释“//**3**”之后添加适当的语句。

    ④完成成员函数print的类外定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上。请在注释“//**4**”之后添加适当的语句。

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

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

    //MyMainl. cpp

    include <iostream>

    using namespace std;

    class Date

    {

    public:

    //* * 2 * *

    Date(int y, int m, int d)

    {

    //* * 3 * *

    }

    void print() const;

    private:

    //data member

    //* * 1 * *

    };

    void Date: :print () const

    {

    //* * 4 * *

    }

    int main ( )

    {

    Date national_day(1949,10,1);

    national_day.print();

    return 0;

    }


    正确答案:①int year month day; ②Date(){year=1;month=1;day=1;} ③year=y;month=m;day=d; ④coutyear"年"month"月"day"日"end1;
    ①int year, month, day; ②Date(){year=1;month=1;day=1;} ③year=y;month=m;day=d; ④coutyear"年"month"月"day"日"end1; 解析:这是一道综合应用题,主要考核类的定义。
    ①定义私有数据成员year、month和day分别用于表示年、月、日,它们都是血型的数据,所以在第1处填入:“int year, month, day;”。
    ②完成默认构造函数Date的定义,使Date对象的默认值为:year=1,month=1,day=1。
    根据以上要求可知,类Date的默认构造函数为:“Date(){year=1;month=1;day=1}:”。
    ③完成重载构造函数Date(int y, int m, int d)的定义,把数据成员year、month和day分别初始化为参数y、m和d的值。其实也就是给私有成员year、month和day赋值。
    所以在第3处应填入:“year=y;month=m;day=d;”。
    ④完成成员函数print的类定义,使其以“年-月-日”的格式将Date对象的值输出到屏幕上。函数print的功能是输出Date对象的值,此处主要考核C++的格式化输出。
    所以在第4处应该填入:“coutyear"年"month"月"day"日"end1;”。

  • 第18题:

    使用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)”。

  • 第19题:

    使用VC6打开考生文件夹下的工程test11_3。此工程包含一个test11_3.cpp,其中定义了类CPosition,但该类的定义都并不完整。请按要求完成下列操作,将类CPosition的定义补充完整。

    (1)在类定义外完成重载的两个构造函数CPosition()和CPosition(double dx,double dy),其中前者为不带参数的构造函数,使CPosition对象的默认值为x=0,y=0,后者为带参数的构造函数,把数据成员x和y分别初始化为参数dx和dy的值。请在注释“//**1**”之后添加适当的语句。

    (2)在类体中添加函数move(double ax,double ay)的定义,使得点的坐标x和y分别移动ax和ay个单位,请在注释“// **2**”之后添加适当的语句。

    (3)完成函数double distance (double bx,double by)的定义,该函数返回*this和点(bx,by)的距离,请在注释“//**3**”之后添加适当的语句。

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

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

    include<iostream.h>

    include<math.h>

    class CPosition

    {

    public:

    CPosition();

    CPosition(double dx,double dy);

    double getx();

    double gety();

    // ** 2 **

    double distance(double bx,double by);

    private:

    double x;

    double y;

    };

    // ** 1 **

    {

    x=0;y=0;

    }

    CPosition::CPosition(double dx,double dy)

    {

    x=dx;y=dy;

    }

    double CPosition::getx()

    {

    return x;

    }

    double CPosition::gety()

    {

    return y;

    }

    double CPosition::distance(double bx,double by)

    {

    // ** 3 **

    }

    void main()

    {

    double a,b;

    cout << "Input x, y position of a point:";

    cin >> a >> b;

    CPosition psA(a,b);

    cout << “Input x,y position of another point:";

    cin >> a >> b;

    cout << "The distance is " << psA.distance(a,b) <<endl;

    }


    正确答案:(1) CPosition::CPosition () (2) void move(double axdouble ay){x+=ax;y+=ay;}; (3) return sqrt (pow (x-bx2)+pow (y-by2));
    (1) CPosition::CPosition () (2) void move(double ax,double ay){x+=ax;y+=ay;}; (3) return sqrt (pow (x-bx,2)+pow (y-by,2)); 解析:本题主要考查考生对于类的定义和重载构造函数的掌握情况。在(3)中使用了基本的数学函数sqrt(x)求x的开方,pow (x, n)函数是求x的n次方。

  • 第20题:

    使用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;

    }


    正确答案:

  • 第21题:

    使用VC6打开考生文件夹下的工程test16_3,此工程

    (1)定义类Cat 的保护数据成员itsAge用于表示年龄,它是int型的数据。请在注释“//**1**”之后添加适当的语句。

    (2)定义类Cat的保护数据成员GetAge()的类外定义,返回成员的itsAge值,请在注释“//**2**”之后添加适当的语句。

    (3)完成成员函数SetAge(int age)的类外定义,把数据成员itsAge赋值为参数age的值,请在注释“//**3**”之后添加适当的语句。

    (4)完成成员函数Meow的类外定义,使其输出字节符串“meow.”到屏幕上。请在注释“**4**”后添加适当的语句。

    输出结果如下:

    meow.

    kitty is a cat who is 5 years old.

    meow.

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

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

    include<iostream.h>

    class Cat

    {

    public:

    int GetAge();

    void SetAge(int age);

    void Meow();

    protected:

    //**1**

    };

    int Cat::GetAge()

    {

    //**2**

    }

    void Cat::SetAge(int age)

    {

    //**3**

    }

    void Cat: :Meow()

    {

    //**4**

    }

    void main ( )

    {

    Cat kitty;

    kitty.Meow();

    kitty. SetAge(5);

    cout<<"kitty is a cat who is ";

    cout<<kitty.GetAge();

    cout<<" years old.\n";

    kitty. Meow();

    }


    正确答案:(1) int itsAge; (2) return itsAge; (3) itsAge=age; (4) cout"meow.\n";
    (1) int itsAge; (2) return itsAge; (3) itsAge=age; (4) cout"meow.\n"; 解析:本题主要考查考生对于类的定义和成员函数的定义的深刻理解,考查的都是最基本的操作。

  • 第22题:

    问答题
    用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了多个类,但类不能达到输出要求,按照定义的输出修改函数,使得输出如下:  TestClass3  TestClass2  TestClass1  其中定义的类并不完整,按照要求完成下列操作,将类的定义补充完整。  1.类TestClass2公共继承于TestClass1,请在注释∥********1********后添加适当的语句。  2.print函数为虚函数,请在注释∥********2********后添加适当的语句。  3.修改语句,使得p指定对象obj3,请在注释∥********3********后添加适当的语句。  4.修改语句,利用p调用print()函数,完成输出信息,注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。    使用VC6打开考生文件夹下的源程序文件modi3.cpp。程序通过继承关系,实现对姓名的控制。类TestClass1实现对名字访问的接口,TestClass2实现对名字的设置和输出。  程序输出为:  TestClass2Name  May  其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。  1.在类TestClass1中定义接口函数GetName()为纯虚函数。请在注释∥********1********后添加适当的语句。  2.函数GetName2()实现获得名字的缓存,但是只获得读允许操作这个缓存,请在注释∥********2********后添加适当的语句。  3.实现TestClass2的构造函数,请在注释∥********3********后添加适当的语句。  4.完成TestClass2的构造函数,实现对名字的处理。请在注释∥********4********后添加适当的语句。  注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。

    正确答案: 1.添加语句:virtual void GetName()=0;
    2.添加语句:const char* GetName2()
    3.添加语句:TestClass2(char* str)
    4.添加语句:m_str[i]=0;
    解析:1.题目1要求“在类TestClass1中定义接口函数GetName()为纯虚函数”。在C++中,基类用关键字virtual将成员函数声明为虚函数,而纯虚函数是在声明虚函数时“初始化”为0的函数,即“virtual void GetName()=0;”。
    2.题目2要求“函数GetName2()实现获得名字的缓存,但是只获得读允许操作这个缓存”。实际上是要求函数GetName2()只能对数据成员进行引用,而不能修改,所以应将GetName2()函数声明为常成员函数,即“const char* GetName2()”。
    3.题目3要求“实现TestClass2的构造函数”。TestClass2的构造函数与类TestClass2名相同,而且第三个标识下的大括弧中是对字符数组str的操作,所以类TestClass2的构造函数中的参数为str,即“TestClass2(char* str)”。
    4.题目4要求“完成TestClass2的构造函数,实现对名字的处理”。补全类TestClass2的构造函数,构造函数中的名字变量str对应于类TestClass1中的成员变量m_str,所以这里补全变量赋值操作“m_str[i]=0;”。
    解析: 暂无解析

  • 第23题:

    问答题
    使用VC6打开考生文件夹下的源程序文件modi3.cpp,其中定义了用于表示日期的类Date,但类Date的定义并不完整,按要求完成下列操作,将类的定义补充完整。  1.定义私有成员变量year、month、day,分别表示年、月、日,类型为int。请在注释∥********1********后添加适当的语句。  2.完成构造函数,分别给year、month、day赋值,请在注释∥********2********后添加适当的语句。  3.完成重载符号“+=”的定义,请在注释∥********3********后添加适当的语句。  4.完成print()打印函数,如2008年8月8日到屏幕和文件modi3.txt格式相同,请在注释∥********4********后添加适当的语句。  注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。

    正确答案: 1.添加语句:int year,month,day;
    2.添加语句:year=y;month=m;day=d;
    3.添加语句:Date & operator+=(int m)
    4.添加语句:cout<<year<<″年″<<month<<″月″<<day<<″日″<<endl;
    解析:1.题目1要求“定义私有成员变量year、month、day”。在C++程序的private区域中添加变量year、month、day的定义,即在第1个标识下添加“int year,month,day;”。
    2.题目2要求“完成构造函数,分别给year、month、 day赋值”。在程序中“Date(int y,int m,int d)”的构造函数中添加给year、month、day赋值的语句,即在第2个标识下添加“year=y;month=m;day=d;”。
    3.题目3要求“完成重载符号“+=”的定义”。在C++中,运算符重载的定义格式为函数operator+重载运算符+,所以这里补全“Date & operator+=(int m)”。
    4.题目4要求“完成函数print()打印函数”。在print()函数中补全其打印功能,即在第四个标识下添加“cout<<year<<″年″<<month<<″月″<<day<<″日″<<endl;”。
    解析: 暂无解析