我正在浏览 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/