仿照string类,写一个my_string类
实现代码
#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
//无参构造
my_string()
{
str=NULL;
len=0;
}
//有参构造
my_string(char *str)
{
this->str=new char[128];
strcpy(this->str,str);
len=strlen(this->str);
}
//拷贝构造
my_string(const my_string &other)
{
this->str=new char[128];
strcpy(this->str,other.str);
this->len=other.len;
}
//拷贝赋值
my_string& operator=(const my_string &other)
{
if(this->str != NULL)
{
delete this->str; //将原先内存释放,方式出现内存泄露
this->str = NULL;
}
this->str=new char[128];
strcpy(this->str,other.str);
this->len=other.len;
}
//判空
bool my_empty()
{
if(len==0)
{
return 1;
}
return 0;
}
//求长度
int my_size()
{
return len;
}
//转化为c风格字符串
char *my_str()
{
return str;
}
};
int main()
{
my_string str1("wjm");
cout<<"str1:"<<str1.my_str()<<endl;
my_string str2(str1);
cout<<"str2:"<<str2.my_str()<<endl;
my_string str3;
str3=str2;
cout<<"str3:"<<str3.my_str()<<endl;
cout<<"my_empty:"<<str3.my_empty()<<endl;
cout<<"my_size:"<<str3.my_size()<<endl;
cout<<"my_str:"<<str3.my_str()<<endl;
return 0;
}
运行结果
使用有参构造函数初始化str1
使用拷贝构造函数初始化str2
使用拷贝赋值函数,将str2赋值给str3
str3不为空,长度为3