#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;
}
从上面的代码我重载了 后缀增量 和 后缀一元减 .我知道 后缀一元减没有意义,但我想知道为什么我有 的编译错误x- 并且没有任何问题 x-- 和 x.operator-(0) 操作。我在 DevC++ 中编译了这段代码,但出现以下错误。
[Error] expected primary-expression before ';' token
出了什么问题x- ?
最佳答案
What is wrong with
x-
?
没有错;这是由语言设计的。你会看到同样的错误
1 - ;
意思是,operator -
期待一个参数像你在下一行所做的那样工作x.operator-(0);
关于c++ - C++ 编译器是否将所有后缀运算符重载视为相同(- 和 -- 的后缀版本)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63317859/