补充完整下面的类定义: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;}};

题目

补充完整下面的类定义:

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;}

};


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

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

    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。

  • 第2题:

    已知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 ;
    }

  • 第3题:

    有如下类定义: classA{ char*a; public: A( ):a(O){} A(char*aa){//把aa所指字符串拷贝到a所指向的存储空间 a=__; strcpy(a,aa); } ~A( ){delete[]a;} }; 横线处应填写的表达式是( )。

    A.Dewchar[strlen(aa)+1]

    B.char[strlen(aa)+1]

    C.char[strlen(aa)]

    D.newchar[sizeof(aa)-1]


    正确答案:A
    A。【解析】对动态分配存储空间的考查,在C++中,回车键需计一字符,即总的长度为strlen(aa)+1。

  • 第4题:

    有以下类定义:

    class A{

    char*a;

    public:

    A( ):a(0){ }

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

    a=______;

    strcpy(a,aA) ;

    }

    ~A( ){delete[ ]a;}

    };

    画线处应填写的表达式是

    A.new char[strlen(aA)+1]

    B.char[strlen(aA)+1]

    C.char[strlen(aA)]

    D.new char[sizeof(aA)-1]


    正确答案:A
    解析:为a申请一个比aa串长增加1的一个存储空问。B和C缺少new运算子,D分配空间不足。

  • 第5题:

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