operators
来自cppreference.com
该页由英文版wiki使用Google Translate机器翻译而来。
该翻译可能存在错误或用词不当。鼠标停留在文本上可以看到原版本。你可以帮助我们修正错误或改进翻译。参见说明请点击这里. |
目录 |
[编辑] 运算符重载
[编辑] 语法
type operator op ( params ) ;
|
|||||||||
[编辑] 解释
- <类型> /(s)的变量的类型.原文:<type> is/are the type(s) of the variables.
- <op>是在特定的操作(例如
+
,+=
,<<
,>>
,&&
,||
,%
等).原文:<op> is the particular operator (e.g.+
,+=
,<<
,>>
,&&
,||
,%
, etc.). - 与<params> /(s)的所需的参数的名称(取决于操作员).原文:<params> is/are the name(s) of the required parameters (depends on the operator).
[编辑] 限制
- 您不能创建新的运营商,如
**
或&|
.原文:You cannot create new operators such as**
or&|
. - 并非所有的运营商都可以被重载
- 一些运算符只能重载为类非静态成员原文:Some operators can only be overloaded as non-static class members
- 不使用重载运算符的短路计算原文:Short-circuit evaluation doesn't work with overloaded operators
[编辑] 操作者呼叫
使用通常的中缀符号可以被称为重载操作符
原文:
Overloaded operators can be called using the usual infix notation
a+b
或函数符号
operator+(a,b)
[编辑] 示例
#include <iostream> using namespace std; class Fraction{ private: int numerator, denominator; public: Fraction(int n, int d): numerator(n), denominator(d) {} // Note that the keyword operator combined with an actual // operator is used as the function name friend ostream& operator<<(ostream&, Fraction&); }; ostream& operator<<(ostream& out, Fraction& f){ out << f.numerator << '/' << f.denominator; return out; } int main(){ Fraction f1(3, 8); Fraction f2(1, 2); cout << f1 << endl; cout << 3 << ' ' << f2 << endl; return 0; }
输出:
3/8 3 1/2
[编辑] 见也
Common operators | ||||||
---|---|---|---|---|---|---|
分配 | incrementNJdecrement | 算术 | 合乎逻辑的 | 比较 | memberNJaccess | 其他 |
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
Special operators | ||||||