class String
{
public:
String(const char* str = nullptr); //普通构造函数
String(const String& other); //拷贝构造函数
~String(void); //析构函数
String& operator = (const String& other); //赋值函数
private:
char* m_data;
};
//普通构造函数
String::String(const char* str)
{
if(str == nullptr){
m_data = new char[1]; //对空字符自动申请存放结束标志'\0'的空
*m_data = '\0';
}else{
m_data = new char[strlen(str) + 1]; //+1是为了多余一个字符存放'\0'
strcpy(m_data, str);
}
}
//拷贝构造函数
String::String(const String& other)
{
if(other.m_data == nullptr){
m_data = nullptr;
}else{
//注意下面括号里面都是other.m_data
m_data = new char[strlen(other.m_data) + 1];
strcpy(m_data, other.m_data);
}
}
//析构函数
String::~String(void)
{
if(m_data != nullptr){
delete [] m_data;
m_data = nullptr;
}
}
//赋值运算符
c++编写String类
最新推荐文章于 2024-10-16 15:52:29 发布
本文介绍了如何在C++中自定义一个String类,并详细讲解了如何重载加号(+)和等号(=)运算符,以实现字符串的拼接和赋值操作。
摘要由CSDN通过智能技术生成