为什么对const的引用可以引用文字?

时间:2018-07-15 14:16:46

标签: c++ reference

为什么“普通”引用不能引用文字,而对const的引用可以呢?据我了解,文字不是对象!

1 个答案:

答案 0 :(得分:-2)

您不想更改42的值。

这并不意味着语言从技术上不支持对文字的左值引用。我记得,毕竟Fortran做到了。它只需要自动创建一个临时文件并传递一个引用即可。

但是,您很容易遇到这样的代码:

void advance( int& x ) { ++x; }

void foo()
{
    unsigned i = 7;
    // ...
    advance( i );     // Would advance an automatic temporary's value.
    // Here there would be no change to `i`.
}

关于

  

文字不是对象!

简单42类型的文字int并不表示对象。不一定有保存该值的数据存储位置。您不能像 &42 这样使用其地址。

但是,仅举一个例子,文字"Blah"表示一个对象:您可以像&"Blah"这样获取其地址。