仿照string完成myString类
#include <iostream>
#include <cstring>
using namespace std;
class myString
{
private:
char *str;//记录c风格的字符串
int size;//记录字符串的实际长度
public:
myString():size(10)
{
str=new char[size];
}
myString(const char* s)
{
size=strlen(s)+1;
str=new char[size];
strcpy(str,s);
}
//拷贝构造
myString(const myString &other):str(new char[other.size]),size(other.size)
{
strcpy(str,other.str);
}
//拷贝赋值
myString& operator=(const myString& other)
{
if(&other!=this)
{
delete[] str;
size=other.size;
str=new char[size];
strcpy(str,other.str);
}
return *this;
}
//析构函数
~myString()
{
delete [] str;
}
//判空函数
bool isempty()
{
bool flag=false;
if(size==0)
{
flag=true;
}
return flag;
}
//size函数
int length()
{
return this->size-1;
}
//c_str函数
const char* c_str()
{
return str;
}
//at函数
char& at(int pos)
{
if(pos<0||pos>=size)
{
cout<<"pos错误"<<endl;
}
return str[pos];
}
};
int main()
{
myString s1("123456789");
myString s2=s1;
cout<<s1.c_str()<<endl;
cout<<s2.c_str()<<endl;
cout<<s1.sizes()<<' '<<s2.sizes()<<endl;
myString s3;
cout<<s3.isempty()<<' '<<s2.isempty()<<endl;
return 0;
}