【问题标题】:How does C++ know which '++' operator to call? [duplicate]C++ 如何知道调用哪个“++”运算符? [复制]
【发布时间】:2021-03-30 00:03:25
【问题描述】:

我在这里使用 C++,在查看一些运算符重载函数时弹出了这个问题。 在下面的函数中,我理解第二个函数中的 int 参数只是提供不同签名的一种方式,如果使用前缀增量,则允许调用第一个函数,而后缀增量则允许调用第二个函数(根据我正在读的书)。

const_iterator & operator++ ( )
{
    current = current->next;
    return *this;
}

const_iterator operator++ ( int )
{
    const_iterator old = *this;
    ++( *this );
    return old;
}

由于对函数的调用是++itr和itr++的形式,没有传递参数,语言如何知道调用哪一个?

【问题讨论】:

    标签: c++


    【解决方案1】:

    如果你写++itr,编译器会将它翻译成itr.operator++(),并调用第一个函数。如果你写itr++,编译器会将它翻译成itr.operator++(0),然后调用第二个函数。

    您也可以将operator++ 实现为非成员函数,尽管很少这样做。在这种情况下,翻译将分别为operator++(itr)operator++(itr, 0)

    【讨论】:

    • 谢谢!现在你的解释和其他用户提供的链接变得很清楚了。
    【解决方案2】:

    好的,你知道什么是后增量和前增量吗? i++ 是后增量,++i 是前增量。因此,在编译器中确实存在 if 语句,如果 varName 后跟 ++ 调用 operator++ (var) 如果您看到 ++ 后跟变量名调用 operator++ (),则归结为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多