0
A
回答
3
如果操作者直接映射到功能的含义,然后将其建议使用操作者,例如
==
代替equals
,因为它比较平等,+
代替add
如果它加入例如数学向量,- 但不是
+
而不是add
,如果它是例如。附加到列表中。
1
我只会这样做,如果它是绝对清楚它做了什么。阅读代码更好避免超载。因为你的大脑习惯于阅读单词而不是一些操作员。有时候操作员可以做出与猜测不同的事情。但我认为==
已经足够清楚了。
如果在某些库中将它们用作回调函数,则运算符很适用。例如std::sort
。您可以定义将使用的operator <
,它将定义如何对对象进行排序。
2
,正如除其他答案:
非成员operator ==和成员operator ==或某种之间的主要区别等于方法,它在我脑海中,是比较类/结构对象时使用隐式转换的机会。
所以,如果你有一些结构X
:
struct X {
X() = default;
X(int) {}
};
您可以定义一个非成员operator ==为X
:
bool operator==(const X&, const X&) {
// some logic here
}
然后让隐式转换的用途:
X x;
std::cout << (42 == x) << " " << (x == 42) << std::endl;
相关问题
- 1. 运算符重载:成员函数与非成员函数?
- 2. 重载操作符和朋友函数
- 3. 重载操作符或使函数(C++)
- 4. 操作符函数的操作符重载时出现问题
- 5. 操作员新操作员和新操作员不能重载?
- 6. 测量重载操作的时间和成员函数的函数
- 7. 作为成员函数重载*乘法运算符两次?
- 8. 这个函数如何成为一个重载操作符?
- 9. *操作符重载操作数顺序
- 10. 操作员作为朋友重载函数?
- 11. 重载操作员=错误
- 12. 如何重载<<操作符以打印类成员?
- 13. 非成员函数操作符+(...)不能有cv-限定符
- 14. 错误操作符<<重载 - 没有操作员发现
- 15. 问题重载函数成员C++
- 16. C++重载的成员函数错误
- 17. 运算符重载VS模板函数
- 18. 为什么重载操作符是类的成员只能有一个参数
- 19. 超载>作为成员函数
- 20. 如何使用for_each作为重载操作符函数()
- 21. 运算符重载(朋友和成员函数)
- 22. C++重载我的重载操作符?
- 23. 函数的超载流操作符
- 24. 多个操作符[]重载
- 25. 操作符重载“等于”
- 26. C++重载操作符
- 27. Nim操作符重载
- 28. Python:__setattr__操作符重载
- 29. ostream的操作符重载
- 30. 嵌套重载操作符?
没有“永远”但是,如果过载操作符足够直观,那么可以回答,但通常认为这是一个很好的过载 – user