您的位置:首页 > 其它

课堂作业

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;

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