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