《C++ Primer》14.3.1节练习
练习14.16:
//为strBlob定义==和!=
class strBlob
{friend bool operator==(const strBlob &lhs,const strBlob &rhs);friend bool operator!=(const strBlob &lhs,const strBlob &rhs);
};bool operator==(const strBlob &lhs,const strBlob &rhs)
{return lhs.data==rhs.data;
}bool operator!=(const strBlob &lhs,const strBlob &rhs)
{return !(lhs==rhs);
}//为strBlobPtr定义==和!=
class strBlobPtr
{friend bool operator==(const strBlobPtr &lhs,const strBlobPtr &rhs);friend bool operator!=(const strBlobPtr &lhs,const strBlobPtr &rhs);
};bool operator==(const strBlobPtr &lhs,const strBlobPtr &rhs)
{auto l = lhs.wptr.lock(),r = rhs.wptr.lock();if (l==r)//两个指针都为空,或指向相同的vector且curr指向相同元素时,相等,否则不等return (!r || lhs.curr==rhs.curr);else return false;
}bool operator!=(const strBlobPtr &lhs,const strBlobPtr &rhs)
{return !(lhs==rhs);
}//为strVec定义==和!=
class strVec
{friend bool operator==(const strVec &lhs,const strVec &rhs);friend bool operator!=(const strVec &lhs,const strVec &rhs);
};bool operator==(const strVec &lhs,const strVec &rhs);
{if (lhs.size()!=rhs.size()){return false;}for (auto itr1=lhs.begin(),itr2 = rhs.begin();itr1!=lhs.end() && itr2!=rhs.end();itr1++,itr2++){if (*itr1!=*itr2){return false;}}return true;
}bool operator!=(const strVec &lhs,const strVec &rhs)
{return !(lhs==rhs);
}
//为String定义==和!=
class String
{friend bool operator==(const String &lhs,const String &rhs);friend bool operator!=(const String &lhs,const String &rhs);private:const char *str;
}bool operator==(const String &lhs,const String &rhs)
{return strcmp(lhs.str,rhs.str);
}bool operator!=(const String &lhs,const String &rhs)
{return !(lhs==rhs);
}
练习14.17:
在练习7.40中,我们实现了Date类。因为我们可以比较两个日期是否相等,因此需要实现相等运算符。
class Date
{friend bool operator==(const Date &d1,const Date &d2);friend bool operator!=(const Date &d1,const Date &d2);
};bool operator==(const Date &d1,const Date &d2)
{return d1.year==d2.year && d1.month==d2.month && d1.day==d2.day;
}bool operator!=(const Date &d1,const Date &d2)
{return !(d1==d2);
}
《C++ Primer》14.3.1节练习相关推荐
- 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...
老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...
- C++ primer 14章习题答案
14.1节 练习14.1 相同点:对于优先级和结合型以及操作数的数目都不变. 不同点:重载操作符必须具有至少一个class或枚举类型的操作数. 14.2 下面所有的代码行可能把好几个文件放在一起了. ...
- 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...
老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...
- 《C++ Primer》14.3.2节练习(部分)
练习14.18: String类的关系运算符就是比较两个字符串字典序的先后. class String {friend bool operator<(const String &s1,c ...
- 《C++ Primer》14.2.2节练习
练习14.9: 输入运算符从给定输入流读取对应类型的对象,存入Sales_data的数据成员中.与输出不同,输入通常要进行一些正确性的判定,并进行相应处理. class Sales_data {fri ...
- 《C++ Primer》14.2.1节练习
练习14.6: class Sales_data {friend ostream&operator<<(sotream&os,const Salse_data &i ...
- C++primer 9.2.1节练习
练习9.3 迭代器begin和end必须指向相同的容器,end可以与begin指向相同的位置,但不能指向begin之前的位置: 练习9.4 1 #include <iostream> 2 ...
- C++primer 10.2.1节练习
练习10.3 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <s ...
- C++primer 13.1.6节练习
练习13.18 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using na ...
最新文章
- 这款工具,1分钟定位性能瓶颈,我老板都说好!
- 卷积Convolution
- Linux中查看信息的命令
- [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
- react router4 需要配置2遍BrowserRouter
- python周天为一周的开始_周天-和周天相关的内容-阿里云开发者社区
- 重构技术架构首先解决组织架构
- 网络聊天室的技术与发展
- AVR 定点数运算程序设计及数制转换
- 发布 学习进度条 博客要求
- zookeeper安装_Centos7安装配置Zookeeper
- 集体智慧编程Python
- opencv-4.5.5-vc14_vc15配置环境VC++
- 安卓虚拟机 选择分辨率
- ezw证件照芯片压缩算法
- SVN冲突 One or more files are in a conflicted state
- 盲盒是怎么赚钱的?(盲盒App的盈利逻辑)
- 基于云服务器 B/S模式 JavaWeb RFID 图书借阅管理系统
- 【推免】笔试+机试+面试 准备
- camera驱动电源配置_[ROS] 安装 USB Camera 驱动并调用
热门文章
- 【ArcGIS风暴】ArcGIS创建栅格数据集色彩映射表案例--以GlobeLand30土地覆盖数据为例
- linux c之strncpy函数和strncmp函数最简单使用总结
- php基础教程 第五步 逻辑控制
- 表头合并_多个Excel表格合并数据麻烦?试试Power Query轻松帮你解决
- 最大尺寸分辨率_未来就在眼前——视涯科技推出最高分辨率硅基OLED显示屏幕...
- pytorch forward_【Pytorch部署】TorchScript
- 一个常见的物理现象,直今还是未解之谜!
- 我的狗丢了,所以我能加你微信吗? | 今日最佳
- 乔布斯死后的300亿遗产终于被败光了,没想到竟是干了这件事
- 数据这么多,且看R语言怎么处理!