C++如何知道调用哪个“++”运算符?
我在这里使用 C++ 并且在查看一些运算符重载函数时弹出了这个问题。在下面的函数中,我了解到第二个函数中的 int 参数只是提供不同签名的一种方式,允许在使用前缀增量的情况下调用第一个函数,以及使用后缀增量的第二个函数(根据我正在读的书)。
const_iterator & operator++ ( )
{
current = current->next;
return *this;
}
const_iterator operator++ ( int )
{
const_iterator old = *this;
++( *this );
return old;
}
由于对函数的调用是 ++itr 和 itr++ 的形式,没有传递参数,语言如何知道调用哪一个?
回答
如果您编写++itr,编译器会将其转换为itr.operator++()并调用第一个函数。如果您编写itr++,编译器会将其翻译为itr.operator++(0)并调用第二个函数。
您也可以实现operator++为非成员函数,尽管很少这样做。在这种情况下,翻译将分别是operator++(itr)和operator++(itr, 0)。