
版权声明:本文为博主原创文章,未经博主允许不得转载。
编写类String的构造函数、析构函数和赋值函数,已知类String的原型为:
class String
{
public:
String(const char *str = NULL); // 普通构造函数
String(const String &other); // 拷贝构造函数
~String(void); // 析构函数
String& operator =(const String &other); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
/*String的实现*/
String::String(const char *str=NULL)
{
if(str==NULL){
m_date=NULL;
}else{
int len=strlen(str);
m_data=new char[len+1];
strcpy(m_data,str);
}
}
String::String(const String &other)
{
int len=strlen(other.m_data);
m_data=new char[len+1];
strcpy(m_data,other.m_data);
}
String::~String()
{
if(m_data!=NULL){
delete[] m_data;
m_data=NULL;
}
}
String& String::operator=(const String &other)
{
if(this==&other){
return *this;
}
if(m_data!=NULL){
delete[] m_data;
}
int len=strlen(other.m_data);
m_data=new char[len+1];
strcpy(m_data,other.m_data);
return *this;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
参考:http://www.cnblogs.com/jwyue0520/archive/2012/12/03/2800160.html