What is a constant reference? (not a reference to a constant)(什么是常量引用?(不是对常量的引用))
问题描述
一个非常理论化的问题...为什么常量引用的行为方式与常量指针不同,以便我可以实际更改它们指向的对象?它们看起来真的像另一个普通的变量声明.我为什么要使用它们?这是我运行的一个简短示例,它编译并运行时没有错误:
A pretty theoretical question...Why do constant references not behave the same way as constant pointers so that I can actually change the object they are pointing to? They really seem like another plain variable declaration. Why would I ever use them? This is a short example that I run which compiles and runs with no errors:
int main (){
int i=0;
int y=1;
int&const icr=i;
icr=y; // Can change the object it is pointing to so it's not like a const pointer...
icr=99; // Can assign another value but the value is not assigned to y...
int x=9;
icr=x;
cout<<"icr: "<<icr<<", y:"<<y<<endl;
}
推荐答案
最清晰的答案.是否X&const x"有意义吗?
The clearest answer. Does "X& const x" make any sense?
不,是胡说八道
要了解上述声明的含义,请从右到左阅读:x 是对 X 的常量引用".但那是多余的——引用始终是常量,从某种意义上说,您永远无法重新设置引用使其指向不同的对象.绝不.有或没有常量.
To find out what the above declaration means, read it right-to-left: "x is a const reference to a X". But that is redundant — references are always const, in the sense that you can never reseat a reference to make it refer to a different object. Never. With or without the const.
换句话说,X&const x"在功能上等同于X&X".由于在 & 后添加 const 没有任何好处,因此您不应该添加它:它会使人们感到困惑——const 会使一些人们认为 X 是 const,就好像你说const X&"一样.x".
In other words, "X& const x" is functionally equivalent to "X& x". Since you’re gaining nothing by adding the const after the &, you shouldn’t add it: it will confuse people — the const will make some people think that the X is const, as if you had said "const X& x".
这篇关于什么是常量引用?(不是对常量的引用)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:什么是常量引用?(不是对常量的引用)


基础教程推荐
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- Windows Media Foundation 录制音频 2021-01-01
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为什么语句不能出现在命名空间范围内? 2021-01-01