版權聲明:本文爲博主原創文章,未經博主允許不得轉載。
編寫類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