课后作业运算符重载
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
}
#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
}
相关文章推荐
- 高编课后作业------第一周
- 课后作业-结对编程项目总结
- Python第三章课后作业
- 课后作业
- 研修班第二次课后作业
- 【高编作业】第四章课后题
- 写在11期培训班第五次课后作业前面的话
- 高编课后作业------第三周-2
- 【高编作业】第六周课后题
- 3-7日高项课后作业
- 高级编程技术 课后作业七(第4周)
- C++ 第四章课后习题作业
- Python第三天课后作业
- 【高编作业】第七章课后题
- 课后作业7
- 软件体系结构课后作业01
- Python第四天课后作业
- 信管14:运算符重载作业7-9示例
- 【中文】【吴恩达课后编程作业】Course 1 - 神经网络和深度学习 - 第四周作业(1&2)
- 软件体系架构课后作业02-架构漫谈阅读笔记