【问题标题】:Does '*(&x)' take more work than 'x''*(&x)' 是否比 'x' 需要更多的工作
【发布时间】:2014-06-02 15:17:02
【问题描述】:

在我的代码中写这个*(&x)x 有什么不同吗?还是编译器使它们成为相同的东西?

【问题讨论】:

标签: c++


【解决方案1】:

GCC 至少似乎为*(&x)x 生成相同的指令,假设x 的任何类型都不会重载&* 运算符。

【讨论】:

  • 如何查看编译器生成了什么指令?
  • 你可以为 GCC 使用-S 标志,也有一些网站可以做到这一点,比如assembly.ynh.io
【解决方案2】:

这当然不利于可读性。

只要没有运算符重载,几乎可以肯定编译器会为两者生成相同的代码。编译成汇编(-S in gcc)自己看看。

【讨论】:

    【解决方案3】:

    在我的代码中写这个 *(&x) 与 x 有什么不同吗?

    如果* 或/和& 是重载运算符,它们可能意味着不同,否则*(&x)x 表示相同的东西,在这种情况下,它会降低可读性等你不想写那个。看到这个类似的主题:

    希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 2011-01-31
      • 1970-01-01
      • 2013-09-01
      • 2019-05-10
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多