itgle.com

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

题目

( 14 )补充完整下面的类定义:

class XCH{

char* a;

public:

XCH ( char* as ) { // 构造函数

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

strcpy ( a,aa ) ;

}

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

Delele []a;

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

strcpy ( a, x .a )

【 14 】 ;

}

~XCH () {delete []a;}

};


相似考题

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

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

    补充完整下面的类定义:

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

    };


    正确答案:return*this
    return*this

  • 第2题:

    有如下类定义,请将Sample类的拷贝构造函数补充完整。

    class Sample{

    public:

    Sample(){)

    ~Sample(){if(p)delete p;)

    Sample(const Sample& s){

    ______

    }

    void SetData(int data) {p=new int(data);}

    private:

    int*p;

    };


    正确答案:p=new int; p=s.p;
    p=new int; p=s.p; 解析:此题考查的是复制构造函数。复制构造函数定义的一般格式如下:类名::类名(const类名&引用对象名){复制构造函数体)。而在类中的声明部分可省去“类名::”。

  • 第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 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对象作为返回值。

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