#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
//无参构造
my_string():len(15)
{
str=new char[len];
cout<<"无参构造"<<endl;
cout<<str<<endl;
}
//有参构造
my_string(char *p)
{
len = strlen(p);
str = new char[len];
for(int i=0;i<=len;i++)
{
str[i]=p[i];
}
cout<<"有参构造"<<endl;
}
//拷贝构造
my_string(const my_string &other)
{
str = new char[other.len];
len = other.len;
for(int i=0;i<=len;i++)
{
str[i] = other.str[i];
}
cout<<"拷贝构造"<<endl;
}
//拷贝赋值
my_string &operator=(const my_string &other)
{
str = new char[other.len];
len = other.len;
for(int i=0;i<=len;i++)
{
str[i] = other.str[i];
}
cout<<"拷贝赋值"<<endl;
return *this;
}
//析构函数
~my_string()
{
delete str;
cout<<"析构函数"<<endl;
}
char *c_str()
{
return str;
}
//+=运算符重载
my_string & operator+=(const my_string & R)
{
strcat(this->str,R.str);
this->len+=R.len;
return *this;
}
//[]运算符重载
char operator[](int pos)const
{
return str[pos];
}
//+运算符重载
const my_string operator+(const my_string & R)const
{
my_string temp;
strcpy(temp.str,this->str);
cout<<this->str<<endl;
cout<<"****"<<temp.str<<endl;
strcat(temp.str,R.str);
temp.len=strlen(temp.str);
cout<<temp.str<<endl;
return temp;
}
//>运算符重载
bool operator>(const my_string &R)const
{
if(strcmp(this->str,R.str)>0)
return 1;
else
return 0;
}
//<运算符重载
bool operator<(const my_string &R)const
{
if(strcmp(this->str,R.str)<0)
return 1;
else
return 0;
}
//==运算符重载
bool operator==(const my_string &R)const
{
if(strcmp(this->str,R.str)==0)
return 1;
else
return 0;
}
};
int main()
{
my_string s1("world");
my_string s2("nice");
my_string s3=s1;
my_string s4="hello";
s4+=s1;
my_string s5;
s5=s4+s2;
cout<<"****"<<s5.c_str()<<endl;
cout<<s4.c_str()<<endl;
cout<<s2.c_str()<<endl;
cout<<s3.c_str()<<endl;
cout<<s1[4]<<endl;
if(s4>s2)
cout<<"yes:"<<endl;
else
cout<<"no"<<endl;
if(s4<s2)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
if(s3==s1)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
return 0;
}
华清远见上海中心22071班--10.8
最新推荐文章于 2024-06-15 10:30:23 发布