Nay*_*iya 3 c++ operator-overloading
我知道这是重载后增量运算符的方法:
const MyClass& MyClass::operator++(int);
Run Code Online (Sandbox Code Playgroud)
为什么它有int作为参数?
D&E,§11.5.3:
我提出了明显的解决方案,添加了关键词
prefix和postfixC++ [...]然而,我收到了那些不喜欢新关键词的人的愤怒.提出了几个不涉及新关键词的替代方案.例如:
class Ptr_to_X {
X ++operator(); // prefix ++
X operator++(); // postfix ++
};
Run Code Online (Sandbox Code Playgroud)
要么
class Ptr_to_X {
X& operator++(); // postfix because it
// returns a reference
x operator(); // prefix because it
// doesn't return a reference
};
Run Code Online (Sandbox Code Playgroud)
我认为前者太可爱了,而后者太微妙了.最后我决定:
class Ptr_to_X {
X operator++(); // prefix: no argument
X operator++(int); // postfix: because of the argument
};
Run Code Online (Sandbox Code Playgroud)
这可能太可爱而且太微妙,但它有效,不需要新的语法,并且具有疯狂的逻辑.其他一元运算符是前缀,在定义为成员函数时不带参数."奇数"和未使用的伪
int参数用于指示奇数后缀运算符.换句话说,在后缀的情况下,++介于第一个(实际)操作数和第二个(虚拟)参数之间,因此是后缀.这些解释是必要的,因为机制是独特的,因此有点疣.如果有一个选择,我可能会介绍
prefix和postfix关键字,但那时似乎不可行.
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |