您的位置:首页 > 其它

编写String的构造函数、析构函数、拷贝构造函数、赋值函数

2016-04-19 15:04 441 查看

函数原型

class String
{
public:
String(const char* str = "");
~String();
String(const String& other);
String&::operator=(const String& other);
};


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::~String()
{
delete []m_data;
}


String的拷贝构造函数

String::String(const String& other)
{
int length = strlen(other.m_data);
m_data = new char[length + 1];
strcpy(m_data, other.m_data);
}

// 赋值函数
String&::operator=(const String& other)
{
// 1.判断是否是自赋值
if (this != other)
{
// 2.分配新的内存
char* temp = new char[strlen(other.m_data) + 1];
strcpy(temp,other.m_data);
// 3.释放旧资源,并指向新的资源
delete []m_data;
m_data = temp;
}
// 4.返回对象
return *this;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: