问题描述
我注意到将 char 分配给 const int& 可以编译,但将其分配给 int& 会导致编译错误.
I noticed that assigning a char to a const int& compiles, but assigning it to a int& gives a compilation error.
char c;
int& x = c; // this fails to compile
const int& y = c; // this is ok
我知道这样做不是一个好的做法,但我很想知道发生这种情况的原因.
I understand that it is not a good practice to do this, but I am curious to know the reason why it happens.
我通过寻找分配给不同类型的引用"、将 char 分配给 int 引用"和常量引用和非常量引用之间的差异"来搜索答案,并遇到了许多有用的帖子(int vs const int& , 将字符分配给 int 变量时的奇怪行为 , 在 C 和 C++ 中将 char 转换为 int ,引用和作为函数参数的常量引用之间的区别?),但它们似乎没有解决我的问题.
I have searched for an answer by looking for "assigning to reference of different type", "assigning char to a int reference", and "difference between const reference and non-const reference", and came across a number of useful posts (int vs const int& , Weird behaviour when assigning a char to a int variable , Convert char to int in C and C++ , Difference between reference and const reference as function parameter?), but they do not seem to be addressing my question.
如果之前已经回答过这个问题,我深表歉意.
My apologies if this has been already answered before.
推荐答案
int& x = c;
此处由编译器执行从 char 到 int 的隐式转换.生成的临时 int 只能绑定到 const 引用.绑定到 const int& 还将延长临时结果的生命周期以匹配它所绑定到的引用的生命周期.
Here an implicit conversion from char to int is being performed by the compiler. The resulting temporary int can only be bound to a const reference. Binding to a const int& will also extend the lifetime of the temporary result to match that of the reference it is bound to.
这篇关于在 C++ 中将 char 分配给 int 引用和 const int 引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)