int i = 0, &ri = i;
const int ci = 2, &rci = ci ;
auto& m = &i;//无法从“int *”转换为“int *&”
auto& m1 = &ci;//无法从“const int *”转换为“const int *&”
为什么下面两个auto出错?求大佬解答
引用是变量别名,不是地址。应当如下。
auto& m = i;
auto& m1 = ci;
&在右值时就是取地址了啊,左值时才是引用申明
所以错误提示&i是int*,而auto& m是int&,两者差别就在这
auto的推导规则:
(1)当不声明为指针或是引用时,auto的推导结果和初始化表达式抛弃引用和const属性限定符后的类型一致
(2)当声明为指针或是引用时,auto的推导结果将保持初始化表达式的const属性
望采纳!
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632