最近在看《C++ primer》英文版第69页说到复合类型、常量和auto,看的有点晕乎乎。。。
不知道有没有人能给更通俗的解释下。
还有就是想问下关于引用的顶层const和底层const的疑问。
目前不确定引用是否有顶层const,如果有顶层又表示什么意思呢?引用不是初始化后就不能再重新引用么,难道是默认一定有顶层const吗?不知道这样理解是否正确,还请各路大能指教,多谢!
请问引用有顶层const和底层const之分吗,还是只有底层const?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- Davidation 2017-04-13 07:57关注
个人理解,仅供参考:
1.顶层const和底层const的概念仅仅针对指针。
顶层const指针意味着指针指向某一个对象之后,指针不能被修改以指向其他对象;
底层const指针意味着不同通过解引用的方式来修改该指针指向的对象,比如“*p = ..”是不被底层const所允许的。
2.引用没有顶层或底层const相关概念。
普通的引用经过初始化之后绑定到一个对象,所有对引用的操作都是对被绑定的对象的操作。
3.但是:
以下这点类似于指针的顶层const性质:
普通引用一经绑定,就不能更改绑定对象。这也是为什么引用必须被显式初始化的原因(因为如果没有显式初始化,则引用被理解为绑定了未定义的一个变量)。
以下这一点类似于指针的顶层const性质:
const引用一旦绑定一个对象,则不能用这个引用去修改该对象(但是通过其他方式修改该对象是可以的)。
举例:
int i = 1,j = 2;int &k = i; k = j;(这是可以的,结果i = j = 2);
int i = 1;const int &k = i;k = 2;(这是不可以的,因为这是一个const引用).
int i = 1;const int &k = i;int &m = i;m = 2(这是可以的,因为没有通过const引用k去修改i).解决 无用评论 打赏 举报
悬赏问题
- ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
- ¥15 活动选择题。最多可以参加几个项目?
- ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
- ¥15 vs2019中数据导出问题
- ¥20 云服务Linux系统TCP-MSS值修改?
- ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
- ¥20 怎么在stm32门禁成品上增加查询记录功能
- ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
- ¥50 NT4.0系统 STOP:0X0000007B
- ¥15 想问一下stata17中这段代码哪里有问题呀