仿照string类实现Mystring
#include <iostream>
#include <cstring>
using namespace std;
class Mystring
{
private:
int len;
char *str; //记录c风格的字符串
public:
//无参构造
Mystring() :len(10)
{
str = new char[len];
strcpy(str, "");
cout<<"Mystring : 无参构造"<<endl;
}
//有参构造
Mystring(const char *s)
{
len = strlen(s);
str = new char[len+1];
strcpy(str,s);
cout<<"Mystring : 有参构造"<<endl;
}
//定义拷贝构造函数
Mystring(const Mystring &other) //深拷贝
{
len = other.len;
str = new char[len+1];
strcpy(str,other.str);
cout<<"Mystring :拷贝构造"<<endl;
}
//定义析构函数
~Mystring()
{
delete[] str;
cout<<"Mystring :析构函数,this ="<<this<<endl;
}
//定义判空函数
bool empty()
{
return len;
}
//定义size函数
int size()
{
return len;
}
//定义c_str函数
char *c_str()
{
return str;
}
//定义at函数
char &at(int pos)
{
char *p = str;
p = p + pos;
return *p;
}
};
int main()
{
Mystring s1;
Mystring s2("hello");
Mystring s3(s2);
s2.at(0) = 'H';
cout <<""<<s2.size() << endl;
cout<<""<<s2.empty()<<endl;
cout<<""<<s2.c_str()<<endl;
cout<<""<<s3.c_str()<<endl;
return 0;
}