c++ - 为什么关系运算符在 STL 字符串中被重载为非成员函数?
问题描述
我正在浏览 STL 字符串的文档 - http://www.cplusplus.com/reference/string/string/。
在其中,我发现关系运算符被重载为非成员函数。有什么理由将它们作为非成员函数而不是成员函数重载?
解决方案
将它们作为非成员函数重载允许将运算符的 LHS 转换为 type std::string
。例如,以下不应该operator==
是成员的工作:
std::string name = "foo";
if ("foo" == name)
// ...
那是因为"foo".operator==(name)
不是一个有效的表达式。
推荐阅读
- java - 矩形图案内的金字塔
- javascript - 反应路由器在刷新时重定向到主页
- javascript - TypeError:无法读取未定义的属性'ref'
- javascript - JavaScript .map() 使用另一个数组中的值更新数组 - 返回值但键未定义
- javascript - 无法在组件方法中访问 $refs
- java - Files.move(...) throwing FileSystemException: The process cannot access the file because it is being used by another process
- python - 如何创建列表字典?
- firebase - 使用 Flutter Messaging 的推送通知使 Flutter 应用程序崩溃
- amazon-web-services - 如何在 AWS ALB 中为 100 多个目标组设置运行状况检查规则
- flex-lexer - 为什么我的词法分析器无法识别数字、ID 和运算符