位置 帝国网站管理系统>职场>笔试面试>c++

顶层const和底层const

顶层const和底层const

表示声明常量的const都是顶层const。 用于声明引用的const都是底层const。

而修饰指针类型的的const: 则顶层const是:指针本身是常量。 底层const是:指针所指的

对象是常量。 而即是顶层const又是底层const的就是指向和所指的内容都不可以修改的指

针。

C++primer的例题2.30

对于下面的这些语句,请说明对象被声明成了顶层const还是底层const?

const int v2 = 0; int v1 = v2;

int *p1 = &v1, &r1 = v1;

const int *p2 = &v2, *const p3 = &i, &r2 = v2;

答案:v2 是顶层const,p2 是底层const,p3 既是顶层const又是底层const,r2 是底层const。

解析:

const int v2 =0 ; 示声明常量的const都是顶层const,因此v2是顶层const。

const int *p2 = &v2 ; p2是常量指针,因而是底层const。

对p3的声明可以改写为:const int *const p3 = &i ; 可以看到const既修饰了类型也修饰了指

向,因此p3 既是顶层const又是底层const。

对r2的声明可以改写为:const int &r2 = v2 ; 而用于声明引用的const都是底层const,因此r2

是底层const。