🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 运算符重载的规则 * 只能对C++已有的运算符进行重载,不能定义新的运算符 * 重载的运算符的作用的操作数至少有一个对象 * 不能改变运算符的运算对象的个数 * 不能改变运算符的优先级 * 不能改变运算符的结合性 * 重载运算符的函数不能有默认参数 * 当函数的参数列表中有两个参数时,一般重载为友元形式 * 赋值运算符,下表运算符,函数调用运算符必须定义为函数的成员函数 * 流插入运算符,流提取运算符,类型转换运算符不能定义为类的成员函数 # 定义方式 ~~~ T operator 操作符(形参列表)    //T代表返回值的类型 {    ···  //函数体 } ~~~ # 允许重载的运算符 ![image-20200607000238121](file://C:/Users/28165/AppData/Roaming/Typora/typora-user-images/image-20200607000238121.png?lastModify=1591534259) # 不允许重载的运算符 | . | 成员访问运算符 | | --- | --- | | .\* | 成员指针访问运算符 | | :: | 域运算符 | | sizeof | 长度运算符 | | ?: | 条件运算符 | # 例子 ~~~ #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; }                          //使p指向实参字符串 ​ void String∷display( )   //输出p所指向的字符串 {    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; } ~~~