课堂作业
2015-04-28 00:21
169 查看
//input的 一些用法原则 pause 阻止程序自动退出 = +的重载 注意不让形参改变(const) 为何=还要重载。
#include <iostream.h>
#include <cstring>
#include<windows.h>
class String
{
public:
String(){p=NULL;}
String(String &);
String(char *str);
~String();
String& operator=(const String&);
String operator+(const String &);
friend bool operator>(String &string1,String &string2);
friend bool operator< (String &string1, String &string2);
friend bool operator== (String &string1, String &string2);
friend bool operator!= (String &string1, String &string2);
friend ostream& operator << (ostream&,const String&);
friend istream& operator >> (istream&,String&);
void display();
private:
char *p;
};
String::String(String &string1)
{
if(string1.p)
p=new char[strlen(string1.p)+1];
else p=0;
strcpy(p,string1.p);
}
String::String(char *str)
{
p=str;
}
String::~String()
{
if(p!=NULL)
delete p;
p=NULL;
}
String& String::operator=(const String &s)
{
if(p)
{delete[]p; p=new char[strlen(s.p)+1];}
else
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
return *this;
}
String String::operator +(const String &s)
{
String temp;
if(temp.p!=NULL)
delete[]temp.p;
temp.p = new char[strlen(p)+strlen(s.p)+1];
strcpy(temp.p,p);
strcat(temp.p,s.p);
return temp;
}
bool operator>(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else
return false;
}
bool operator<(String &string1,String &string2)
{
if(!operator>(string1,string2))
return true;
else
return false;
}
bool operator==(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else
return false;
}
bool operator !=(String &string1, String &string2)
{
if(!(string1.p==string2.p))
return true;
else
return false;
}
ostream& operator <<(ostream &output,const String &s)
{
output<<s.p;
return output;
}
istream& operator >>(istream &intput,String &s)
{
cout<<"input a string:";
char haha[100086]="NULL";
intput>>haha;
s.p=haha;
return intput;
}
void String::display()
{
cout<<p<<endl;
}
void compare(String &string1,String &string2)
{if(operator>(string1,string2)==1)
{ cout<<"string1>string2"<<endl;}
else
if(operator<(string1,string2)==1)
{
cout<<"string1<string2"<<endl;
}
if(operator==(string1,string2)==1)
{
cout<<"string1=string2<<endl";
}
if(operator==(string1,string2)!=1)
{
cout<<"string1!=string2"<<endl;
}
}
int main()
{
String string1("dear"),string2("mylove");
cout<<"输出string1:";
string1.display();
cout<<"输出string2:";
string2.display();
cout<<"比较string1和string2:";
compare(string1,string2);
String string4,string5,string6;
cout<<"string1和string2连接后赋值给string4:"<<endl;
string4=string1+string2;
string4.display();
cout<<"输入string5:";
cin>>string5;
cout<<"输出string5"<<endl;
cout<<"string5=";
cout<<string5<<endl;
cout<<"string1赋值给string6:"<<endl;
string6=string1;
string6.display();
system("pause");
return 0;
}
#include <iostream.h>
#include <cstring>
#include<windows.h>
class String
{
public:
String(){p=NULL;}
String(String &);
String(char *str);
~String();
String& operator=(const String&);
String operator+(const String &);
friend bool operator>(String &string1,String &string2);
friend bool operator< (String &string1, String &string2);
friend bool operator== (String &string1, String &string2);
friend bool operator!= (String &string1, String &string2);
friend ostream& operator << (ostream&,const String&);
friend istream& operator >> (istream&,String&);
void display();
private:
char *p;
};
String::String(String &string1)
{
if(string1.p)
p=new char[strlen(string1.p)+1];
else p=0;
strcpy(p,string1.p);
}
String::String(char *str)
{
p=str;
}
String::~String()
{
if(p!=NULL)
delete p;
p=NULL;
}
String& String::operator=(const String &s)
{
if(p)
{delete[]p; p=new char[strlen(s.p)+1];}
else
p=new char[strlen(s.p)+1];
strcpy(p,s.p);
return *this;
}
String String::operator +(const String &s)
{
String temp;
if(temp.p!=NULL)
delete[]temp.p;
temp.p = new char[strlen(p)+strlen(s.p)+1];
strcpy(temp.p,p);
strcat(temp.p,s.p);
return temp;
}
bool operator>(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)>0)
return true;
else
return false;
}
bool operator<(String &string1,String &string2)
{
if(!operator>(string1,string2))
return true;
else
return false;
}
bool operator==(String &string1,String &string2)
{
if(strcmp(string1.p,string2.p)==0)
return true;
else
return false;
}
bool operator !=(String &string1, String &string2)
{
if(!(string1.p==string2.p))
return true;
else
return false;
}
ostream& operator <<(ostream &output,const String &s)
{
output<<s.p;
return output;
}
istream& operator >>(istream &intput,String &s)
{
cout<<"input a string:";
char haha[100086]="NULL";
intput>>haha;
s.p=haha;
return intput;
}
void String::display()
{
cout<<p<<endl;
}
void compare(String &string1,String &string2)
{if(operator>(string1,string2)==1)
{ cout<<"string1>string2"<<endl;}
else
if(operator<(string1,string2)==1)
{
cout<<"string1<string2"<<endl;
}
if(operator==(string1,string2)==1)
{
cout<<"string1=string2<<endl";
}
if(operator==(string1,string2)!=1)
{
cout<<"string1!=string2"<<endl;
}
}
int main()
{
String string1("dear"),string2("mylove");
cout<<"输出string1:";
string1.display();
cout<<"输出string2:";
string2.display();
cout<<"比较string1和string2:";
compare(string1,string2);
String string4,string5,string6;
cout<<"string1和string2连接后赋值给string4:"<<endl;
string4=string1+string2;
string4.display();
cout<<"输入string5:";
cin>>string5;
cout<<"输出string5"<<endl;
cout<<"string5=";
cout<<string5<<endl;
cout<<"string1赋值给string6:"<<endl;
string6=string1;
string6.display();
system("pause");
return 0;
}