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)


以上是C++如何知道调用哪个“++”运算符?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>