后缀运算符不应该被视为二元运算符吗



后缀运算符采用int参数。原因已经有了一个问题,答案似乎是:"因为Bjarne Stroustrup这么说"

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

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

如果Bjarne Stroustrup需要一些东西来提示编译器以不同的行为,为什么他不能直接键入运算符是否返回了引用?

因为不能根据函数的返回类型重载函数。的功能可以过载的是参数、常量限定和参考限定

为什么我不能做:foo++ 13;

因为(int)参数只是用于过载分辨率。您不接受或使用该参数。

为什么int参数没有默认为1

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

为什么这被认为是一元运算符,它需要一个参数

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

要回答标题中的问题:在foo++中,++显然是一元运算符。事实上,如果你仔细观察它,它的实现可能看起来像一个二进制运算符,但这并不能改变它的使用方式,这就是它成为一元运算符的原因。

最新更新