练习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节练习相关推荐

  1. 老李推荐:第14章4节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-端口转发 1...

    老李推荐:第14章4节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-端口转发 在初始化HierarchyViewer的实例过程中, ...

  2. C++ primer 14章习题答案

    14.1节 练习14.1 相同点:对于优先级和结合型以及操作数的数目都不变. 不同点:重载操作符必须具有至少一个class或枚举类型的操作数. 14.2 下面所有的代码行可能把好几个文件放在一起了. ...

  3. 老李推荐:第14章8节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-获取控件列表并建立控件树 1...

    老李推荐:第14章8节<MonkeyRunner源码剖析> HierarchyViewer实现原理-获取控件列表并建立控件树 poptest是国内唯一一家培养测试开发工程师的培训机构,以学 ...

  4. 《C++ Primer》14.3.2节练习(部分)

    练习14.18: String类的关系运算符就是比较两个字符串字典序的先后. class String {friend bool operator<(const String &s1,c ...

  5. 《C++ Primer》14.2.2节练习

    练习14.9: 输入运算符从给定输入流读取对应类型的对象,存入Sales_data的数据成员中.与输出不同,输入通常要进行一些正确性的判定,并进行相应处理. class Sales_data {fri ...

  6. 《C++ Primer》14.2.1节练习

    练习14.6: class Sales_data {friend ostream&operator<<(sotream&os,const Salse_data &i ...

  7. C++primer 9.2.1节练习

    练习9.3 迭代器begin和end必须指向相同的容器,end可以与begin指向相同的位置,但不能指向begin之前的位置: 练习9.4 1 #include <iostream> 2 ...

  8. C++primer 10.2.1节练习

    练习10.3 1 #include<iostream> 2 #include<string> 3 #include<vector> 4 #include <s ...

  9. C++primer 13.1.6节练习

    练习13.18 1 #include <iostream> 2 #include <string> 3 #include <memory> 4 5 using na ...

最新文章

  1. 这款工具,1分钟定位性能瓶颈,我老板都说好!
  2. 卷积Convolution
  3. Linux中查看信息的命令
  4. [luogu 2324][SCOI 2005] 骑士精神 (A*算法)
  5. react router4 需要配置2遍BrowserRouter
  6. python周天为一周的开始_周天-和周天相关的内容-阿里云开发者社区
  7. 重构技术架构首先解决组织架构
  8. 网络聊天室的技术与发展
  9. AVR 定点数运算程序设计及数制转换
  10. 发布 学习进度条 博客要求
  11. zookeeper安装_Centos7安装配置Zookeeper
  12. 集体智慧编程Python
  13. opencv-4.5.5-vc14_vc15配置环境VC++
  14. 安卓虚拟机 选择分辨率
  15. ezw证件照芯片压缩算法
  16. SVN冲突 One or more files are in a conflicted state
  17. 盲盒是怎么赚钱的?(盲盒App的盈利逻辑)
  18. 基于云服务器 B/S模式 JavaWeb RFID 图书借阅管理系统
  19. 【推免】笔试+机试+面试 准备
  20. camera驱动电源配置_[ROS] 安装 USB Camera 驱动并调用

热门文章

  1. 【ArcGIS风暴】ArcGIS创建栅格数据集色彩映射表案例--以GlobeLand30土地覆盖数据为例
  2. linux c之strncpy函数和strncmp函数最简单使用总结
  3. php基础教程 第五步 逻辑控制
  4. 表头合并_多个Excel表格合并数据麻烦?试试Power Query轻松帮你解决
  5. 最大尺寸分辨率_未来就在眼前——视涯科技推出最高分辨率硅基OLED显示屏幕...
  6. pytorch forward_【Pytorch部署】TorchScript
  7. 一个常见的物理现象,直今还是未解之谜!
  8. 我的狗丢了,所以我能加你微信吗? | 今日最佳
  9. 乔布斯死后的300亿遗产终于被败光了,没想到竟是干了这件事
  10. 数据这么多,且看R语言怎么处理!