C++的顶层const 和 底层const

顶层const:表示指针本身为常量。

底层const:表示指针所指向的对象为一个常量。

且指针类型即可以是顶层const 也可以是 底层const

int i = 0;

int const* p1 = &i;    // p1不能被改变,其为顶层const

int const p2  = 4;     // p2不能被改变,为顶层const

int cosnt *p3 = &p2   // p3能被改变,为底层const

const int *const p4 = p3;  // 第一个const为底层cosnt 第二个const为顶层const ,此处p4即是顶层const也是底层const。

在执行拷贝操作时,顶层const不受影响,但是底层const受影响很大,对底层const的拷贝操作,考入和考出的对象都必需要具有相同的底层const的资格。

int *p = p4      //  错误操作,p4包含了底层const含义,所指对象为const int,而p为普通int

而:

p3 = p4       // 正确,均为底层

额外的,在c++11中,对一个确定的常量表达式可以使用constexpr来声明变量。

猜你喜欢

转载自www.cnblogs.com/zhangli07/p/11960242.html