class
String
{
public
:
//构造函数
String(
const
char
*str = NULL);
//拷贝构造
String(
const
String &rhs);
//拷贝赋值
String &operator=(
const
String &rhs);
//析构函数
~String();
private
:
char
*m_str;
}
String::String(
const
char
*str)
{
if
(str == NULL)
//缺省情况
{
m_str =
new
char
[1];
m_str[0] =
'\0'
;
}
else
//根据参数开辟空间
{
m_str =
new
char
[
strlen
(str)+1];
strcpy
(m_str, str);
}
}
String::String(
const
String &rhs)
{
m_str =
new
char
[
strlen
(rhs.m_str)+1];
strcpy
(m_str, rhs.m_str);
}
String &String::operator=(
const
String &rhs)
{
if
(
this
== &rhs)
//自赋值情况
return
*
this
;
delete
[]m_str;
//释放原来的空间
m_str =
new
char
[
strlen
(rhs.m_str)+1];
strcpy
(m_str, rhs.m_str);
return
*
this
;
}
String::~String()
{
delete
[]m_str;
}