实现mystring类
#include <iostream>
#include <cstring>
using namespace std;
class Mystring
{
private:
int len;
char *str;
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);
}
//定义拷贝构造函数
Mystring(const Mystring &other):len(other.len),str(new char[len+1] {*(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;
return 0;
}