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 的 const 引用".但这是多余的——参考始终是 const,从某种意义上说,您永远无法重新安装引用使其指向不同的对象.绝不.有或没有常量.
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++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- C++,'if' 表达式中的变量声明 2021-01-01
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01