运算符重载,求助

来源:互联网 发布:mac发送网站快捷方式 编辑:程序博客网 时间:2024/06/06 19:45

 #include <iostream>
using namespace std;
class String
{
public:
 String(){p=NULL;}
 String(char *str);
 friend bool operator>(String &string1,String &string2);
 friend bool operator<(String &string1,String &string2);
 friend bool operator==(String &string1,String &string2);
 void display();
private:
 char *p;

};
String::String(char *str)
{
 p=str;
}
void String::display()
{
 cout<<p;
}
 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;
}
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;
}

定义的是友元函数,在类外定义的时候为啥说不能用类中的私有变量呢,问题出在哪了?

原创粉丝点击