c++ - 为什么关系运算符在 STL 字符串中重载为非成员函数?

标签 c++ string stl

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

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

最佳答案

将它们重载为非成员函数可以将运算符的 LHS 转换为 std::string 类型。例如,如果 operator== 是成员,则以下内容不起作用:

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

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

关于c++ - 为什么关系运算符在 STL 字符串中重载为非成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58036536/

相关文章:

java - String.replace() 和正则表达式。模式中的正则表达式符号是否会影响?

mysql - 为什么MySQL隐式地将没有数据转换为空字符串?

c++ - std::ostringstream 运算符重载搜索顺序?

c++ - 无法写入矩阵 <vector<vector<double>> 对象

java: 'string index out of range: -1' 异常使用 indexOf()

c++ - 是否需要 std::unique_ptr<T> 才能知道 T 的完整定义?

c++ - 按引用传递或按值传递指针容器之间的区别

c++ - 代码在我的系统上运行良好,但在提交 HackerRank 时出现段错误

c++ - 制作几何库的良好设计方法(关于是否使用 union )?

c++ - 那条线在c++中是什么意思