是' *(& x)'比#' x'

时间:2014-04-18 06:23:09

标签: c++

我的代码中的*(&x)是否与x不同?或者编译器是否使它们成为同一个东西?

3 个答案:

答案 0 :(得分:3)

GCC至少似乎为*(&x)x生成相同的说明,假设x类型不会超载&和{{1}运营商。

答案 1 :(得分:3)

这无疑对可读性有帮助。

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

答案 2 :(得分:1)

  

在我的代码中写这个*(& x)是否与x不同?

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

希望有所帮助。