c++ - 后缀运算符不应该被认为是二元运算符吗

标签 c++ standards unary-operator binary-operators postfix-operator

后缀运算符采用int 参数。已经有一个question as to why ,答案似乎是:“Because Bjarne Stroustrup said so

我对这个答案感到不舒服。如果 Bjarne Stroustrup 需要一些东西来提示编译器以不同的方式运行,他为什么不能直接关闭运算符是否返回引用?这让我质疑:

  1. 为什么我不能:foo++ 13;
  2. 为什么 int 参数不是默认为 1
  3. 为什么这被认为是一元运算符,它需要一个参数

最佳答案

If Bjarne Stroustrup needed something to tip the compiler off to behave differently, why couldn't he just key off whether the operator returned a reference?

因为你不能根据函数的返回类型来重载函数。函数可以重载的就是参数、const限定和引用限定

Why can't I do: foo++ 13;

因为 (int) 参数只是用于重载解析。你不接受它或使用参数。

Why isn't the int parameter defaulted to 1

同样,它没有被使用。它只是告诉编译器它是前缀版本还是后缀版本。

Why is this considered a unary operator at all, it takes an argument

它实际上不需要参数。该参数仅用于使它们不同。它只影响和作用于一个操作数,因此它是一元运算符。

关于c++ - 后缀运算符不应该被认为是二元运算符吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37049991/

相关文章:

java - 将原生 uint8_t(Java 字节)转换为 int

c - 句法酸涩

c++ - 调用不通过空指针访问成员的非静态方法是否合法/定义明确的 C++?

grammar - 在 Bison 中使用一元减号的优先级并不能解决移位/减少冲突

c - 当 p 指向一个数组(int)索引时, '-1[p]' 是什么?

c++ - 无论连接是否成功,函数 connect() 都返回零

c++ - QStringList文件目录和文件名

c++ - OSX 中的 Mongodb connect() 段错误

c++ - 未命名对象的 RVO(返回值优化)是否是普遍保证的行为?

c++ - C++11 标准是否保证零值有符号整数的一元减为零?