实现代码是
#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *cstr;
int len;
public:
my_string()
{
cout<<"my_string::无参构造"<<endl;
}
my_string(char *str)
{
if(str!=NULL)
{
len= strlen(str);
cstr = new char[len+1];
strcpy(cstr,str);
*(cstr+len)='\0';
cout<<"my_string::有参构造"<<endl;
}
}
my_string( const my_string &other)
{
this->cstr=new char[other.len+1];
strcpy(this->cstr,other.cstr);
*(cstr+len)='\0';
len=other.len;
cout<<"my_string::拷贝构造"<<endl;
}
~my_string()
{
if(cstr != NULL)
{
delete []cstr;
}
cout<<"my_string::析构函数"<<endl;
}
bool empty()
{
bool b=0;
if(cstr!=NULL)
{
b=1;
return b;
}
else
{
return b;
}
}
int size()
{
return len;
}
char* str_c()
{
char *p=cstr;
return p;
}
char &at(int index)
{
if(index <= len )
{
return *(cstr + index);
}
else
{
static char error =-1;
cout<<"输入错误"<<endl;
return error;
}
}
};
int main()
{ char s2[128]="shenjiabao";
my_string s1(s2);
my_string s3(s1);
cout<<s1.at(0)<<endl;
cout<<s1.size()<<endl;
cout<<s1.empty()<<endl;
cout<<s1.str_c()<<endl;
return 0;
}
代码现象是