双目运算符的重载
来源:互联网 发布:android 数据库系统 编辑:程序博客网 时间:2024/04/27 17:56
源代码:
<span style="font-size:14px;">#include<iostream>#include<cstring>using namespace std;class String{public:String();String(char *str);void String_display();friend bool operator<(String &string1,String &string2);friend bool operator>(String &string1,String &string2);friend bool operator==(String &string1,String &string2);private:char *p;};String::String(){p=NULL;}String::String(char *str){p=str;}void String::String_display(){cout<<p;}bool operator<(String &string1,String &string2){if(strcmp(string1.p,string2.p)<0)return true;elsereturn false;}bool operator>(String &string1,String &string2){if(strcmp(string1.p,string2.p)>0)return true;elsereturn false;}bool operator==(String &string1,String &string2){if(strcmp(string1.p,string2.p)==0)return true;elsereturn false;}void compare(String &string1,String &string2){if(operator<(string1,string2)==1){string1.String_display();cout<<"<";string2.String_display();}elseif(operator>(string1,string2)==1){string1.String_display();cout<<">";string2.String_display();}elseif(operator==(string1,string2)==1){string1.String_display();cout<<"==";string2.String_display();}}int main(){String excel1("All"),excel2("Hello");compare(excel1,excel2);return 0;}</span>运行结果:
1.本代码暂时没有实现手动地输入,现在还没有弄清楚该怎样实现这个功能;只能手动改变源代码的初始化来实现它的功能;
2.当一个重载函数作为一个类的函数时,可以隐藏一个参数,就像第一篇运算符重载的博客那个源代码一样,这是因为运算符函数是用this指针隐式地访问类对象的成员。实际上上一篇博客中源代码中运算符重载函数就是访问了两个对象成员,一个是形参成员,另外一个是this指向的的成员,即那个被省略的参数的成员,实际上其实同过了this指针被访问了,正是由于this指针的存在,所以被作为类中的函数时是可以少写一个参数的,当时这样是有要求的,必须要求后面的运算符运算式第一个参数是一个类对象,而且这个类对象必须与运算符函数的类型相同;
3.之所以友元运算符重载函数存在的意义就是为了防止第一个参数的类型与运算符重载函数类型不一致的情况;
4.双目运算符重载为友元函数时,由于友元函数不是该类的成员函数,因此在函数的形参列表中必须有两个参数,不能省略;
5.C++规定,赋值运算符”=“,下标运算符”[ ]“,函数调用运算符”()“,成员运算符"->"必须作为成员函数重载;
6.流插入"<<"和流提取运算符">>",类型转换符函数不能被定义为类的成员函数,只能作为友元类;
7.一般将单目运算符和符合运算符重载为成员函数;
8.一般将双目运算符重载为友元函数。
0 0
- 双目运算符的重载
- 双目运算符的重载
- 双目运算符重载
- 重载双目运算符
- 双目运算符重载
- 双目运算符重载
- 双目运算符+=的重载
- C++双目运算符重载
- 10.3 重载双目运算符
- 一道亚信联创笔试题--双目运算符的重载
- C++之双目/单目等运算符的重载
- C++:运算符重载2(双目:复数的减法)
- 运算符重载的方式 双目运算符重载为类的成员函数
- C++入门 (十) 重载双目运算符
- 运算符重载加法(双目)
- C++之双目运算符重载
- 重载双目/单目运算符
- 重载双目运算符和重载单目运算符
- 【JQuery】[attribute*=value]属性选择器
- [offer收割]编程练习赛3-题目2:机会渺茫
- pragma comment(linker,"/export:Add=OrgTestDll.Add,@1")
- onWindowFocusChanged用法
- Delphi 字符串截取函数
- 双目运算符的重载
- VC++开发简易输电线路管理信息系统
- html5视频问题
- 脚本实现U盘自动挂载(linux)
- nib、xib和storyboard的区别
- Leetcode 56 Merge Intervals
- 设计模式之观察者模式
- 求字符串中最长无重复字符的子串
- 使用RecyclerView替代ListView