itgle.com

补充完整下面的类定义:class XCH{char*a;public:XCH(char*a A) { //构造函数a=new char[strlen(aA) +1];strcpy(a,aA) ;}XCH&operator=(const XCH&x){//重载赋值函数delete[ ]a;a=new char[strlen(x.A) +1];strcpy(a,x.A) ;______;}~XCH( ){delete[ ]a;}};

题目

补充完整下面的类定义:

class XCH{

char*a;

public:

XCH(char*a A) { //构造函数

a=new char[strlen(aA) +1];

strcpy(a,aA) ;

}

XCH&operator=(const XCH&x){//重载赋值函数

delete[ ]a;

a=new char[strlen(x.A) +1];

strcpy(a,x.A) ;

______;

}

~XCH( ){delete[ ]a;}

};


相似考题

1.使用VC++6.0打开考生文件夹下的源程序文件3.cpp,其中定义了用于表示雇员的Employee类,但类Em-ployee的定义并不完整。请按要求完成下列操作,将类TC的定义补充完整。 (1)定义私有数据成员name、street、city、zipcode和age分别用于表示姓名、街道、城市、邮编、年龄,除年龄是整型外,其余都是char型的数据。请在注释1之后添加适当的语句。 (2)完成默认构造函数TC的定义,使其把参数传递给私有数据成员name、streel、city、zipcode和age。请在注释2之后添加适当的语句。 (3)完成成员函数aherName(char*newName)的定义。请在注释3之后添加适当的语句。 (4)完成成员函数IsEqual(char*ename)的定义,实现当name相等时返回真,否则返回假的功能。请在注释4之后添加适当的语句。 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 试题程序: include<iostream.h> include<string.h) defineMAXLEN20 classTC { private: //********、******** intage; public: TC(char*newName,char*newStreet,char* newCt,char*newZp,intnewAge); voidalterName(char*newName); voiddisplay(); boolIsEqual(char*ename); }; TC::TC(char*newName,char*newStreet,char* newCt,char*newZp,intnewAge) { //********2******** age=newAge; } voidTC::alterName(char*newName) { //********3******** } boolTC::IsEqual(char*ename) { //********4******** } voidTC::display() { cout<<name<<""<<street<<""; cout<<city<<""<<zipcode<<""<<age<<endl; } voidmain(void) { TCemployee[4]= { TC("张三","海淀区复兴路l号","北京","000001",18), TC("李四","海淀区复兴路2号","北京","000002",19), TC("王五","海淀区复兴路3号","北京","000003",20), TC("赵六","海淀区复兴路4号","北京","000004",21) }; for(inti=0;i<4;i++) employee[i].display(); cout<<"\n修改\"李四\"的名字为\"李小四\"\n"<<endl; for(intj=0;j<4;j++) { if(employee[j].IsEqual("李四")) { employee[j].aherName("李小四"); employee[j].display(); break; } } }

3.使用VC6打开考生文件夹下的工程test4_3。此工程包含一个源程序文件test4_3.cpp,其对一个学校的教师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。(1)定义基类person的私有数据成员name和age,分别用于表示姓名和年龄,name为字符指针,age为血型的数据。请在注释“//**1**”之后添加适当的语句。(2)完成基类person的重载构造函数person(char *mint a)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释“//**2**”之后添加适当的语句。(3)根据主函数main中对s1的声明,定义派生类student的构造函数。在注释“//**3**”之后添加适当的语句。(4)完成派生类teacher成员函数void setinf(ehar *n,int a,char *d,char *1)的定义,其功能为记录教师的姓名、年龄、院,系与职称信息。请在注释“//**4**”之后添加适当的语句。输出结果如下:刘雷(45)destructor蒋军(23)destructor注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test4_3.cpp清单如下:include<iostream.h>class person{//**1**public:person(){}person(char *n,int a){//**2**}void setname(char *n){name=n;)void setage(int a){age=a;}~person(){cout<<name<<"("<<age<<")destructor"<<endl;)};class student:public person{char *department;int code;public://**3**{department=d;code=c;}};class teacher:public person{char *department;char *level;public:teacher(){}void setinf(char *n,int a,char *d,char *1){//**4**department=d;level=1;}};void main(){student s1("蒋军",23,"计算机学院",2);teacher t1;t1.setinf("刘雷",45,"计算机学院","教授");}

更多“补充完整下面的类定义: class XCH{ char*a; public: XCH(char*a A) {//构造函数 a=new char ”相关问题
  • 第1题:

    请将下面的程序补充完整,使得程序输出“飘是张娜的书”。

    include

    using namespace std

    class Book{

    public:

    Book(char*str)|strcpy(title,str);

    ______void Printlnfo(){cout<<title<<endl;}

    protected:

    char title[50];

    };

    class MyBook:public Book{

    public:

    MyBook(char*s1,char*S2=“张娜”):

    ______strcpy(owner,s2);}

    virtual void PrintInfo(){cout<<title<<“是”<<owner<<“的书”<<endl;}

    private:

    charowner[10];

    };

    int main(){

    Book*ptr=new MyBook(“飘”);

    ptr->Printlnfo();

    return 0;

    }


    正确答案:virtual MyBook(char*s2)。
    virtual MyBook(char*s2)。

  • 第2题:

    补充完整下面的类定义:

    class XCH{

    char*a:

    public:

    XCH(char球an){ //构造函数

    a=new char[strlen(aft)+1];

    strcpy(a,aA);

    }

    XCH&operator=(const XCH&x){ //重载赋值函数

    delete[]a;

    a=new char[strlen(X.A)+1];

    strcpy(a,x.A);

    【 】

    }

    一XCH(){delete[]a;}

    };


    正确答案:return XCH(A)
    return XCH(A) 解析:要函数返回的是XCH&类型,因此这里要调用XCH构造函数定义一个临时的XCH对象作为返回值。

  • 第3题:

    使用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函数连接“,”和原字符串的前半部分。

  • 第4题:

    根据程序中的注释将下列缺失部分补充完整。

    class A{

    char*a;

    public:

    A():a(0){}

    A(char*aa){ //把aa所指字符串复制给a所指向的存储空间

    a= 【 】 char[strlen(aa)+1];

    strcpy(a,aa);

    }

    ~A(){delete[]a;}

    }


    正确答案:new
    new 解析:本题主要考查对动态存储分配的掌握。要将字符串复制给a所指向的内存空间,需先给指针a动态分配内存空间,故使用运算符new。

  • 第5题:

    已知String类定义如下:

    class String

    {

    public:

    String(const char *str = NULL); // 通用构造函数

    String(const String &another); // 拷贝构造函数

    ~ String(); // 析构函数

    String & perater =(const String &rhs); // 赋值函数

    private:

    char *m_data; // 用于保存字符串

    };

    尝试写出类的成员函数实现。


    正确答案:

     

    String::String(const char *str)
    {
    if ( str == NULL ) //strlen在参数为NULL时会抛
    异常才会有这步判断
    {
    m_data = new char[1] ;
    m_data[0] = '\0' ;
    }
    else
    {
    m_data = new char[strlen(str) + 1];
    strcpy(m_data,str);
    }
    }
    String::String(const String &another)
    {
    m_data = new char[strlen(another.m_data) + 1];
    strcpy(m_data,other.m_data);
    }
    String& String::operator =(const String &rhs)
    {
    if ( this == &rhs)
    return *this ;
    delete []m_data; //删除原来的数据,新开一块内

    m_data = new char[strlen(rhs.m_data) + 1];
    strcpy(m_data,rhs.m_data);
    return *this ;
    }
    String::~String()
    {
    delete []m_data ;
    }