重载 比较

来源:互联网 发布:数据恢复时间 编辑:程序博客网 时间:2024/05/22 00:49
#include <iostream>using namespace std;class String{public:    String();     String(const char*const ch);     int getlen()const { return len;}              friend ostream&operator<<(ostream &o, const String &s)    {        o<<s.str;        return o;    }         friend istream&operator>>(istream &i, String &s)    {         i>>s.str;         return i;    }       friend bool operator<(const String&str1, const String&str2)    {        if(strcmp(str1.str, str2.str) < 0){            return 1;        }else            return 0;    }    friend bool operator>(const String&str1, const String&str2)    {        if(strcmp(str1.str, str2.str) > 0){            return 1;        }else            return 0;    }    friend bool operator==(const String&str1, const String&str2)    {        if(strcmp(str1.str, str2.str) == 0){            return 1;        }else            return 0;    }          char &operator[](unsigned short int  length);    char  operator[](unsigned short int  length)const;         String (const String&r);         String &operator=(const String &s);      private:    unsigned short int len;    char *str;};String::String(){    len = 0;    str = new char[1];    str[0] = '\0';};String::String(const char*const ch){       len = strlen(ch);    str = new char[len+1];    for(int i=0; i<len; i++){       str[i] = ch[i];    }    str[len] = '\0';}; char & String::operator[](unsigned short int length){        if(length > len){           return str[len-1];        }else{           return str[length];        }}; char String::operator[](unsigned short int length)const{        cout<<"下标运算符const执行"<<endl;        if(length > len){           return str[len-1];         }else{           return str[length];        }}; String::String (const String&rs){    len = rs.getlen();    str = new char[len+1];    for(int i=0; i<len; i++){        str[i] = rs[i];            }    str[len]='\0';    cout<<"复制构造函数完成:"<<str<<endl; }; String& String::operator=(const String &s){    cout<<"operator=执行"<<endl;    if(this == &s)    {        return *this;    }else{        delete []str;         len = s.getlen();        str = new char[len+1];        for(int i=0; i<len; i++){            str[i] = s[i];        }        str[len] = '\0';    }    return *this; } int main(){    String s1("aaa");cout<<"s1=aaa"<<endl;    String s2("bbb");cout<<"s2=bbb"<<endl;    int ch1 = s1>s2;if (ch1=1)cout<<"s1<s2"<<endl;else cout<<"s2>=s1"<<endl;String s3("aaa");cout<<"s3=aaa"<<endl;int ch3 = s1==s3;if (ch3=1)cout<<"s1s3相等"<<endl;else cout<<"并不相等"<<endl;int ch4 = s2==s3;if (ch4=1)cout<<"s2s3并不相等"<<endl;else cout<<"相等"<<endl;     return 0;}

0 0
原创粉丝点击