首页 > 解决方案 > 为什么关系运算符在 STL 字符串中被重载为非成员函数?

问题描述

我正在浏览 STL 字符串的文档 - http://www.cplusplus.com/reference/string/string/

在其中,我发现关系运算符被重载为非成员函数。有什么理由将它们作为非成员函数而不是成员函数重载?

标签: c++stringstl

解决方案


将它们作为非成员函数重载允许将运算符的 LHS 转换为 type std::string。例如,以下不应该operator==是成员的工作:

std::string name = "foo";
if ("foo" == name)
    // ...

那是因为"foo".operator==(name)不是一个有效的表达式。


推荐阅读