Programming 板


LINE

小弟想请教一些观念性的问题,最近遇到一个错误是 int i = 1; int *pi = &i; const int *& rpci = pi; // error C2440: 'initializing': cannot convert from 'int *' to 'const int *&' 我对这段有段小疑惑,因为下面这段的写法是合法的 int i = 1; const int &ci = i; 那为什麽换成constant pointer reference就不行呢? 上网查了一下,有得出下面可能发生的错误 const int i = 99; int *pi; const int*& rpci = pi; //if pass rpci = &i; *pi = 10; 如果允许const int* reference to int*, 那就可以透过pi来修改常数i,所以不给过... 但是我很好奇const int* 是否能reference一个int* ? 这样在语法上到底合不合法(虽然有隐患)? 因为const int Reference to int实际上是ok的, 所以我怀疑是不是VC++自己把我挡掉的? 麻烦请各位高手指点一下@@ 感谢! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 60.249.2.10
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Programming/M.1470709984.A.AD4.html ※ 编辑: jamod (60.249.2.10), 08/09/2016 10:34:40
1F:→ CindyLinz: 你的「能不能」包含 explicit 转型吗? 112.121.78.5 08/09 13:04
不包含好了@@,我其实只是比较好奇这段的语法是否合法? 因为我曾经因为const int**和 int**的问题被VC++的compiler婊过, 所以有点混乱... ※ 编辑: jamod (60.249.2.10), 08/09/2016 13:19:12 ※ 编辑: jamod (60.249.2.10), 08/09/2016 13:22:25
2F:推 jeff7037: *&这样的写法能放到函式的引数。但这样 114.24.38.28 08/09 21:20
3F:→ jeff7037: 不行,可见Primer C++第7章函式271页。 114.24.38.28 08/09 21:23
4F:→ jeff7037: 第四章指标p121页。 114.24.38.28 08/09 21:25
5F:→ jeff7037: *&在函式里,意为对传来的引数deference 114.24.38.28 08/09 21:27
6F:→ jeff7037: 可理解为取值。然不可在定义式这样写*& 114.24.38.28 08/09 21:28
7F:推 jeff7037: 你有对*&赋值的动作。 114.24.38.28 08/09 21:30
感谢指点,但我还是有点小疑惑,以上方程式码而言: int *pi; const int*& rpci = pi; 虽然会出错,但是只要把第二行的const拿掉就能正确编译了, 实际上我应该就是单纯的对一个int pointer的别名进行初始化吧?@@ 甚至写成 const int*const & rpci = pi; 也是能正确编译的,我不太能理解为何将要reference的pointer指定为const就能编译? 有点好奇是compiler鸡婆把我挡下的呢?还是在语法规则上就是不合法了? ※ 编辑: jamod (60.249.2.10), 08/10/2016 09:38:52
8F:推 shietsd: non-const reference只能用non-const绑定 219.84.235.190 10/16 15:46
9F:→ shietsd: 但con-ref可以绑所有的 const/non-const 219.84.235.190 10/16 15:47
10F:推 shietsd: const int &ci = i 表示 ci 不能改i的值 219.84.235.190 10/16 15:54
11F:→ shietsd: 但 i 自己可以改,你跑跑看就知道 219.84.235.190 10/16 15:54







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP