为什么“普通”引用不能引用文字,而对const的引用可以呢?据我了解,文字不是对象!
答案 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"
这样获取其地址。