#include <iostream>
#include <cstring>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
//无参构造函数
my_string()
{
len=0;
str=NULL;
}
// ~my_string(){}
//有参构造函数
my_string(char *s)
{
this->str=new char[15];
strcpy(str,s);
len=my_size();
}
//my_string()
//拷贝构造
my_string(const my_string & O)
{
this->len=O.len;
str=new char[len+1];
strcpy(this->str,O.str);
}
//拷贝赋值
my_string& operator=(const my_string& R)
{ if(this != &R)
{
this->len=R.len;
this->str=new char[len+1];
strcpy(this->str,R.str);
}
return *this;
}
//判空
bool my_empty()
{
return str==NULL?true:false;
}
//求长度
int my_size()
{
return strlen(str);
}
//转化为c风格字符串
char *my_str()
{
return str;
}
//取成员
char operator[](const int flag)
{
return this->str[flag];
}
void display()
{
cout<<"str="<<my_str()<<endl;
cout<<"size="<<my_size()<<endl;
cout<<"empty?="<<(my_empty()?"yes":"no")<<endl;
}
friend my_string operator+(my_string&,my_string&);//+
friend ostream& operator<<(ostream& ,my_string& );
friend bool operator >(my_string& ,my_string&);//>
};
//重载求和 +
my_string operator+(my_string& I,my_string& J)
{
my_string k;
k.len=I.len+J.len;
return k;
}
//拷贝赋值 =
//my_string& my_string::operator=(const my_string & R)
//{
// my_string k;
// k.len=R.len;
// k.str=new char[len+1];
// strcpy(k.str,R.str);
// return k;
//}
//输出
ostream&operator <<(ostream& output,my_string& R)
{
output<<R.str;
return output;
}
//判断大小
bool operator >(my_string& i ,my_string& j)
{
if(i.len>j.len)
{
return true;
}
else
{
return false;
}
}
int main()
{
my_string s1("helloworld");
my_string s2("nihao");
if(s1>s2)
{
cout<<"s1>s2"<<endl;
}
else
{
cout<<"s1<s2"<<endl;
}
return 0;
}