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".
这篇关于什么是常量引用?(不是对常量的引用)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:什么是常量引用?(不是对常量的引用)
基础教程推荐
- 如何将 std::pair 的排序 std::list 转换为 std::map 2022-01-01
- 常量变量在标题中不起作用 2021-01-01
- 静态库、静态链接动态库和动态链接动态库的 .lib 文件里面是什么? 2021-01-01
- 如何检查GTK+3.0中的小部件类型? 2022-11-30
- 在 C++ 中计算滚动/移动平均值 2021-01-01
- 如何通过C程序打开命令提示符Cmd 2022-12-09
- 这个宏可以转换成函数吗? 2022-01-01
- C++结构和函数声明。为什么它不能编译? 2022-11-07
- 我有静态或动态 boost 库吗? 2021-01-01
- 如何在 C++ 中初始化静态常量成员? 2022-01-01
