C++中的const限定符(4)——顶层const和底层const

1、顶层const表示对象本身是常量,这一点对任何数据类型都适用。对于指针,它表示指针本身是一个常量(常量指针)。

2、底层const与指针和引用等复合类型的基本类型部分有关。对于指针,它表示指针所指的对象是一个常量(指针常量)。声明引用的const都是底层const。

3、当执行拷贝操作时,,常量是顶层const还是底层const区别明显。

   3.1、顶层const在拷贝时没有什么限制。因为拷贝操作并不会改变被拷贝对象的值。因此,拷入和拷出的对象是否是常量都没什么影响。

   3.2、对于底层const,当执行拷贝操作时,拷入和拷出的对象必须具有相同的底层const资格,或者两个对象的数据必须能够转换。一般来说非常量可以转换成常量,反之则不行。

int i=5;

const int *p1=&i;                   //p1有底层const定义

int *p2=p1;                           //错误p2,没有底层const资格

你可能感兴趣的:(简明C/C++)