#include <iostream>
#include<cstring>
using namespace std;
class my_string
{
private:
char *cstr;
int len;
public:
my_string():cstr(NULL),len(0)
{
cout << "是无参构造函数" <<endl;
} //无参构造函数
my_string(const char *cstr)
{
this->len = strlen(cstr);
this->cstr= new char [this->len];
strcpy(this->cstr,cstr);
cout << "执行有参构造函数"<< endl;
} //有参构造函数
my_string(const my_string &other)
{
this->len= other.len;
this->cstr=new char [this->len];
strcpy(this->cstr ,other.cstr);
cout <<"执行拷贝构造函数" <<endl;
} //拷贝构造函数
~my_string()
{
delete []this->cstr;
cout << "解析的地址" <<this <<endl;
cout <<"执行解析构造函数"<< endl;
}
char* show() //返回cstr
{
return this->cstr;
}
//判空
bool enpty()
{
return this->cstr==NULL?0:1;
}
//返回字符串长度
int size()
{
return this->len;
}
char &at(int index)
{
if(index<0||index>this->len)
{
cout << "定位错误" <<endl;
}
return *(this->cstr+index);
}
};
int main()
{
my_string a="zhangsan";
my_string b("lisi");
my_string c;
my_string d=a;
cout << "a =" <<a.show() <<" b =" <<b.show() <<" d =" <<d.show() <<endl;
cout <<"&a =" << &a <<" "<< "&b =" <<&b <<" "<< "&c =" <<&c <<" &d =" << &d <<endl;
cout <<"a[3] =" <<a.at(3) << endl;
cout <<"返回字符串长度为->>";
cout <<a.size() <<endl;
if(c.enpty())
{
cout << "cstr不为空 " << endl;
}
else
cout <<"cstr为空" <<endl;
cout << "Hello World!" << endl;
return 0;
}
执行结果: