在C++中,顶层const是指const作用于对象本身,可以表示任意对象是常量;而底层const是指指针或引用等复合类型所指的对象是一个常量。
指针类型既可以是顶层const,也可以是底层const;而引用只能是底层const。
const int a = 1; //顶层const
int b = 2;
const int c = 3;
int *const p1 = &b; //顶层const,p1不能指向别处
const int *p2 = &c; //底层const,p2可以指向别处,但p2指向的对象c不能被修改
const int &r = c; //底层const
const int &r1 = b; //正确,const int&可以绑定到一个普通int上
int &const r2 = c; //错误,引用没有顶层const