#include<iostream>
#include <string>
using namespace std;
class String
{public:
String( ){p=NULL;}
String(char *str);
void display( );
// 1、在String类体中声明3个友元函数:
friend bool operator> (String &string1, String &string2);
friend bool operator< (String &string1, String &string2);
friend bool operator== (String &string1, String& string2);
private:
char *p; // 字符型指针,用于指向字符串
};
// 在类外分别定义3个运算符重载函数:
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(strcmp(string1.p,string2.p)<0)
return true;
else
return false;
}
bool operator==(String &string1,String &string2) // 对运算符“= =”重载
{ if(strcmp(string1.p,string2.p)==0)
return true;
else
return false; }
/* 增加了一个compare函数,用来对两个字符串进行比较,并输出相应的信息?这样可以减轻主函数的负担,使主函数简明易读? */
void compare( String &string1, String &string2 )
{ if(operator>(string1,string2)==1)
{ string1.display( ); cout<<">"; string2.display( ); }
else if(operator<(string1,string2)==1)
{ string1.display( ); cout<<"<"; string2.display( ); }
else if(operator==(string1,string2)==1)
{ string1.display( ); cout<<"="; string2.display( ); }
cout<<endl;
}
int main( )
{
String string1("Hello"), string2("Book"), string3("Computer"), string4("Hello");
compare( string1, string2 );
compare( string2, string3 );
compare( string1, string4 );
return 0;
}
为什么这段代码会在if (strcmp(string…)这里显示错误