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 increment 和 postfix 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);
#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 increment 和 postfix 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);