0

后缀运算符带有一个int参数。已经有一个关于为什么的问题,答案似乎是:“因为 Bjarne Stroustrup 这么说

我对这个答案感到不舒服。如果 Bjarne Stroustrup 需要一些东西来提示编译器以使其行为不同,那么他为什么不能直接关闭操作符是否返回引用呢?这让我产生疑问:

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

2 回答 2

6

如果 Bjarne Stroustrup 需要一些东西来提示编译器以使其行为不同,那么他为什么不能直接关闭操作符是否返回引用呢?

因为您不能根据返回类型重载函数。函数可以被重载的参数、常量限定和引用限定

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

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

为什么int参数不默认为1

再次没有使用它。它只是告诉编译器它是前缀还是后缀版本。

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

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

于 2016-05-05T12:02:00.173 回答
2

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

于 2016-05-05T12:06:41.117 回答