1 顶层const表示指针本身是常量,底层const表示指针所指对象为常量;
2 顶层const可以表示任意的对象是常量包括任一类型数据都适用,底层const指的是指针,引用等复合类型;
3声明类const都是底层const;
4顶层const的拷贝是不受限制的,底层const需要相同的const类型或者可以从非常量拷贝给常量;
练习2.4.3
const int v2=0;//顶层const,v2本身为一个常量
int v1=v2;//v1并非常量,只是将v2的值赋予了v1,v1依然是变量,并且顶层const可以给变 量 赋 值;
int *p1=&v1,&r1=v1;
const int *p2=&v2,*const p3=&v1,&r2=v2;//第一个const为底层const,因为其均是指的指针所指对象为常量;*const为顶层const,其是指p3为常量指针;r2是一个引用,声明引用的都是底层const,因为引用被相当于小号,其实质是限制v2为常量,所以其为底层const;