gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:07:02 24 4
gpt4 key购买 nike

#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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com