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)
{
if (str == NULL)
{
m_data = new char[1] ;
*m_data = '\0' ;
}
else
{
int length = strlen(str) ;
m_data = new char[length + 1] ;
strcpy(m_data , str) ;
}
}
//拷贝构造函数
String::String(const String &other )
{
int length = strlen(other.m_data) ;
m_data = new char[length + 1] ;
strcpy(m_data , other.m_data) ;
}
//赋值函数
String &String::operator=(const String &other)
{
if (this == &other) //检查自赋值
{
return *this;
}
delete []m_data ; //释放原有的内存
//分配新的内存资源, 并复制内容
int length = strlen(other.m_data) ;
m_data = new char[length + 1] ;
strcpy(m_data , other.m_data) ;
//返回本对象的引用
return *this;
}
char *strcpy(char *strDest , const char *strSrc)
{
assert((strDest != NULL) && (strSrc != NULL)) ;
char *p = strDest ;
while((*strDest++ = *strSrc++) != '\0');
return p;
}
类 String 的构造函数、析构函数和赋值函数
最新推荐文章于 2021-04-03 10:27:18 发布