C++ 编译器是否将所有后缀运算符重载视为相同(- 和 -- 的后缀版本)?

Does C++ compiler treat all postfix operator overloading as same (postfix version of - and --)?

#include <cstdio>
#include <iostream>
using namespace std;

class Int32 {
    int num;
public:
    Int32(int num = 0) : num(num) {}
    ~Int32() {}
    int value() { return num; }
    Int32 & operator - (int x) { cout << "Postfix of -" << endl; return *this; }
    Int32 & operator -- (int x) { cout << "Postfix of --" << endl; return *this; }
};

int main() {
    Int32 x(100);
    x--;
    x-;  // [Error] expected primary-expression before ';' token
    x.operator-(0);
    return 0;
}

我从上面的代码中重载了 postfix incrementpostfix unary minus。我知道 postfix unary minus 没有意义,但我想知道为什么我有 x- 的编译错误并且没有任何问题x--x.operator-(0) 操作。

我在 DevC++ 中编译了这段代码,但出现了以下错误。

[Error] expected primary-expression before ';' token

x-有什么问题?

What is wrong with x- ?

没问题;这是由语言设计的。您将看到与

相同的错误
1 - ;

意思是,operator - 期望参数像您在下一行中所做的那样工作

x.operator-(0);