C++双目运算符重载
时间:2014-11-05 19:39 点击:次
双目运算符(或称二元运算符)是C++中最常用的运算符。双目运算符有两个操作数,通常在运算符的左右两侧,如3+5,a=b,i<10等。在重载双目运算符时,不言而喻在函数中应该有两个参数。
[例10.4] 定义一个字符串类String,用来存放不定长的字符串,重载运算符“==”、“<”和“>”,用于两个字符串的等于、小于和大于的比较运算。
为了使读者便于理解程序,同时也使读者了解建立程序的步骤,下面分几步来介绍编程过程:
1) 先建立一个String类:
- #include <iostream>
- using namespace std;
- class String
- {
- public:
- String( ){p=NULL;} //默认构造函数
- String(char *str); //构造函数
- void display( );
- private:
- char *p;//字符型指针,用于指向字符串
- };
- String::String(char *str) //定义构造函数
- {p=str;} //使p指向实参字符串
- void String::display( ) //输出p所指向的字符串
- {cout<<p;}
- int main( )
- {
- String string1("Hello"),string2("Book");
- string1.display( );
- cout<<endl;
- string2.display( );
- return 0;
- }
- #include <iostream>
- #include <string>
- using namespace std;
- class String
- {
- public:
- String( ){p=NULL;}
- String(char *str);
- friend bool operator>(String &string1,String &string2);//声明运算符函数为友元函数
- void display( );
- private:
- char *p;//字符型指针,用于指向字符串
- };
- String::String(char *str)
- {p=str;}
- void String::display( ) //输出p所指向的字符串
- {cout<<p;}
- bool operator>(String &string1,String &string2)//定义运算符重载函数
- {
- if(strcmp(string1.p,string2.p)>0)
- return true;
- else return false;
- }
- int main( )
- {
- String string1("Hello"),string2("Book");
- cout<<(string1>string2)<<endl;
- }
- 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;
- }
- int main( )
- {
- String string1("Hello"), string2("Book"), string3("Computer");
- cout<<(string1>string2)<<endl; //比较结果应该为true
- cout<<(string1<string3)<<endl; //比较结果应该为false
- cout<<(string1==string2)<<endl; //比较结果应该为false
- return 0;
- }
- #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( ) //输出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;
- }
顶一下
(0)
0%
踩一下
(0)
0%
相关内容:
最新内容
热点内容
- QQ群
-
微信
- 返回首页
- 返回顶部