#include <iostream>
using namespace std;
class String
{
private:
char* m_data;
public:
String(const char* pStr = NULL);
String(const String& another);
~String();
String& operator = (const String& rhs);
};<span style="white-space:pre"> </span>//分号别漏掉
String::String(const char* pStr)
{
if(pStr == NULL)
{
this->m_data = new char[1];
m_data[0] = '\0';
}
else
{
this->m_data = new char[strlen(pStr)+1];
strcpy(m_data,pStr);
}
}
String::String(const String& another)
{
this->m_data = new char[strlen(another.m_data)+1];
strcpy(m_data,another.m_data);
}
String::~String()
{
delete[]m_data;
}
String& String::operator = (const String& rhs)
{
if(this == &rhs)
return *this;
delete[]m_data;
m_data = new char[strlen(rhs.m_data)+1];
strcpy(m_data,rhs.m_data);
return *this;
}
int main()
{
String a("abcdefg");
printf("%s\n",a);
String b(a);
printf("%s\n",b);
String c = b;<span style="white-space:pre"> </span>//调用复制构造函数
printf("%s\n",c);
String d = "abcdefg"; //隐式转换
printf("%s\n",d);
String e = String("abcdefg");
printf("%s\n",e);
return 0;
}
输出:
abcdefg
abcdefg
abcdefg
abcdefg
abcdefg
请按任意键继续. . .
简单的String类实现
最新推荐文章于 2020-11-09 22:41:49 发布