C++运算符重载的基本规则和习惯用法是什么?
在C++中,运算符重载有三个基本规则需要遵循。像所有这样的规则一样,也有一些例外。这三个规则是:
- 1. 只要运算符的含义不明确或存在争议,就不要重载它。相反,应该使用一个精心选择的名称提供一个函数。基本上,重载运算符的首要规则的核心是:
- 不要这样做。
- 这可能看起来很奇怪,但只有少数情况下运算符重载是合适的。原因是,除非在应用领域中运算符的使用是众所周知的且没有争议,否则很难理解运算符应用背后的语义。
- 2. 始终坚持运算符众所周知的语义。C++对重载运算符的语义没有任何限制。您的编译器可以愉快地接受将二元+运算符实现为从其右侧操作数减去的代码。但是,此类运算符的用户永远不会怀疑表达式a + b会将a从b中减去。
- 3. 始终提供一组相关操作中的所有操作。
- 运算符彼此相关,也与其他操作相关。如果您的类型支持a + b,用户会期望也能调用a += b。如果它支持前缀递增++a,他们会期望a++也能工作。如果他们可以检查a < b,他们肯定也期望能够检查a > b。如果他们可以复制构造您的类型,他们也期望赋值能够工作。
- 在大多数情况下,您不需要运算符重载,并且只应在运算符定义明确且适合这种情况时才重载运算符。这篇文章的灵感来自 https://stackoverflow.com/a/4421708/3719089.
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP