c++ - C++中后缀自增运算符中int变量的含义

标签 c++ operator-overloading

我有这个代码:

class LazyStream {
    ostream& output;
    std::list<string> pending;
public:
    //...
    LazyStream operator++(int n = 0){
        LazyStream other(output);
        if (n>0) output << "<#" << n << ">";
        output << pending.pop_front();
        return other;
    }

我不明白为 operator++ 获取 int 值的含义。我虽然这只是表明运算符是后缀。接线员如何获得号码? 谁能举个例子?

谢谢

最佳答案

嗯,这是我第一次看到默认的 int

正如您所指出的,“虚拟”int 参数用于 区分后缀运算符和前缀。除了那个 它不是真正的假人:当你写的时候:

myVar ++;

myVar有一个用户定义的后缀++,编译器 实际上称它为:

myVar.operator++( 0 );

没有什么可以阻止你写作:

myVar.operator++( 42 );

(当然,不得不这样做,在这种情况下,有点失败 运算符重载的目的。)

关于c++ - C++中后缀自增运算符中int变量的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17944526/

相关文章:

f# - 无法在 F# 中重载 boolean 运算符

c++ - 在共享库中使用重载的new/delete和STL

c++ - 给定两个偶数,求出它们之间所有偶数的平方和

c++ - Windows Mobile 隐藏任务栏和菜单栏

c++ - 为什么不调用虚拟基础非默认构造函数,除非大多数派生基础显式调用它们?

F# 和运算符重载 : (>) and (^)

C++20 概念要求运算符重载结合用户定义模板运算符重载函数

c++ - 为 Clang 静态分析器编写自定义检查器

c++ - 为什么在没有 CUDA __device__ 属性的情况下定义类头有效? (C++)

c++ - iostream 插入器和提取器可以是类成员而不是全局重载吗?