在昨天my_string的基础上,将能重载的运算符全部重载掉
关系运算符:>、<、==、>=、<=、!=
加号运算符:+
取成员运算符:[]
赋值运算符: =
#include <iostream>
using namespace std;
class my_string
{
private:
char *str;
int len;
public:
my_string(){}//无参构造函数
my_string(char *s,int a):str(s),len(a) //有参构造函数
{
cout<<"this is youcang"<<endl;
}
my_string(const my_string &o) //拷贝构造函数
{
this->str = o.str;
this->len = o.len;
cout<<"this is copy"<<endl;
}
my_string &operator = (const my_string& other) //拷贝赋值
{
this->str = other.str;
this->len = other.len;
}
bool my_empty()
{
return *str==0?true:false;
}
int my_size(char *s)
{
len = 0;
while(str[len]!=0)
{
len++;
}
return len;
}
char *my_str()
{
return str;
}
void display()
{
cout<<str<<'\t'<<len<<endl;
}
const bool operator>(const complex &r) const //实现关系运算重载
{
if(this->len>r.len)
{
return ture;
}
return false;
}
const my_string operator+(const my_string &r)const //加法重载
{
my_string temp;
temp.len = this->len+r.len;
temp.str = this->str+r.str;
return temp;
}
char operator[](int o) //取成员运算符重载
{
return (this->str)[o];
}
};
int main()
{
my_string s1("ggbao",1),s2("hhh",2);
s2.display();
my_string s3(s1);
s3.display();
s1=s2;
s1.display();
cout << "Hello World!" << endl;
return 0;
}