【问题标题】:iterator operator overload ++ & -- has an argument int but not used [duplicate]迭代器运算符重载 ++ & -- 有一个参数 int 但未使用 [重复]
【发布时间】:2020-03-27 07:58:14
【问题描述】:
我在多个来源遇到过这种函数签名。它有一个参数int,但函数逻辑不使用该参数。我不确定为什么以这种方式定义? .如果不需要参数,为什么不直接声明没有参数的函数。
iterator operator--(int) {
iterator copy(*this);
operator--();
return copy;
}
谢谢
【问题讨论】:
标签:
c++
iterator
operator-overloading
【解决方案1】:
这是一个虚拟参数,仅用于区分prefix and postfix operators。
int参数是一个虚拟参数,用来区分
运算符的前缀和后缀版本。当用户定义
后缀运算符被调用,传入该参数的值是
始终为零,尽管可以通过调用运算符来更改它
函数调用表示法(例如,a.operator++(2) 或 operator++(a, 2))。