最近在看《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).解决 无用评论 打赏 举报