您的位置:首页 > 其它

课后作业运算符重载

2015-04-27 23:47 302 查看
#include<iostream>

#include<cstring>

using std::cin;

using std::cout;

using std::endl;

using std::ostream;

using std::istream;

class String

{

 char *s;

public:

 String();

 String(int n);

 String(const String& b);

 String(const char* str);

 ~String();

// friend String operator  = (String&s1,const String&s2);

 String operator = (const String &s1);

 friend String operator  + (const String&s1,const String&s2);

 friend ostream& operator << (ostream&,const String&);

 friend istream& operator >> (istream&,String&);

 friend bool operator  > (const String&s1,const String&s2);

 friend bool operator >= (const String&s1,const String&s2);

 friend bool operator  < (const String&s1,const String&s2);

 friend bool operator <= (const String&s1,const String&s2);

 friend bool operator == (const String&s1,const String&s2);

 friend bool operator != (const String&s1,const String&s2);

};

String::String()

{

 s=new char[100];

 s[0]='\0';

}

String::String(int n)

{

 s=new char
;

 s[0]='\0';

}

 String::String(const String& s2)

{

  s = new char[strlen(s2.s)+1];

  s[0]='\0';

  strcpy(s,s2.s);

}

 String::String(const char* str)

 {

  s=new char[strlen(str)+1];

  strcpy(s,str);

 }

 String::~String()

{

 if(s!=NULL)

  delete s;

 s=NULL;

}

String operator + (const String&s1,const String&s2)

{

 String s3;

 strcat(s3.s,s1.s);

 strcat(s3.s,s2.s);

 return s3.s;

}

String String::operator  =(const String &s1)

{

 strcpy(s,s1.s);

 return s1.s;

}

ostream& operator << (ostream& os,const String& str)

{

 os<<str.s;

 return os;

}

istream& operator >> (istream& is,String& str)

{

 is>>str.s;

 return is;

}

bool operator > (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)>0)

 return true;

 else

 return false;

}

bool operator >= (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)>=0)

 return true;

 else

 return false;

}

bool operator < (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)<0)

 return true;

 else

 return false;

}

bool operator <= (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)<=0)

 return true;

 else

 return false;

}

bool operator == (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)==0)

 return true;

 else

 return false;

}

bool operator != (const String&s1,const String&s2)

{

 if(strcmp(s1.s,s2.s)!=0)

 return true;

 else

 return false;

}

 int main()

 {

  String s1("hello");

  String s2("world");

  cout<<"s1="<<s1<<endl;

  cout<<"s2="<<s2<<endl;

  s1=s2;

  cout<<"s1=s2后s1="<<s1<<endl;

  s1=s1+s2;

  cout<<"s1+s2后s1="<<s1<<endl;

  String s3("AAAA");

  String s4("BBBB");

  cout<<"s3="<<s3<<endl;

  cout<<"s4="<<s4<<endl;

  cout<<"1 true 0 false"<<endl;

  cout<<"s3>s4为"<<(s3>s4)<<endl;

  cout<<"s3>=s4为"<<(s3>=s4)<<endl;

  cout<<"s3<s4为"<<(s3<s4)<<endl;

  cout<<"s3<=s4为"<<(s3<=s4)<<endl;

  cout<<"s3==s4为"<<(s3==s4)<<endl;

  cout<<"s3!=s4为"<<(s3!=s4)<<endl;

     return 0

 }

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: