考string类完成my_string类
#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
my_string()
{
len = 15;
str = new char[15];
}
//有参构造
my_string(char *p)
{
len = strlen(p);
str = new char[strlen(p)+1];
strcpy(str, p);
cout<<"有参构造函数"<<endl;
}
//拷贝构造
my_string(const my_string &other)
{
if(this != &other)
{
this ->len = other.len;
this->str = new char[len+1];
strcpy(this->str, other.str);
}
cout<<"拷贝构造函数"<<endl;
}
//拷贝赋值
my_string &operator=(const my_string &other)
{
if(this != &other)
{
this->len = other.len;
this->str = new char[len+1];
strcpy(this->str, other.str);
}
cout<<"拷贝赋值函数"<<endl;
return *this;
}
//析构函数
~my_string()
{
delete str;
cout<<"析构函数"<<endl;
}
void show()
{
cout<<"str::"<<str<<endl;
}
//判空
bool empty()
{
if(len==0)
{
return true;
}
else
{
return false;
}
}
//求总长度
int size()
{
return len;
}
//at()
char &at(int pos)
{
return str[pos];
}
//转c风格字符串
char *c_str()
{
return str;
}
};
int main()
{
string s4 = "lisi";
cout<<s4<<endl;
my_string s1("zhangsan");
my_string s2(s1);
s1.show();
my_string s3;
s3 = s1;
cout<<"s3.at(3):"<<s3.at(3)<<endl;
return 0;
}