-
const必须初始化
-
默认情况下,const对象被设定为仅在文件内有效;若对const变量添加extern关键字,则外部文件也可访问该变量。
-
const引用:
//不可以通过r1修改ci const int &r1 = ci; //初始化常量引用时可以使用非常量对象、任意表达式、字面值(右值) const int &r2 = 10;
-
顶层const和底层const
-
顶层const:表示任意的对象是常量
表示指针本身是一个常量(常量指针)
int * const p1;
常量指针必须初始化,一旦初始化,它的值(即存放在指针中的地址)就不能改变
-
底层const:与指针/引用等复合类型有关
表示指针所指的对象是一个常量(指针常量)
const int *p2
常量对象只能用常量指针/引用;但常量指针/引用可以指向任意值,但指向的对象不同通过其他途径改变其值。
-
执行对象的拷贝操作时:顶层const不受限制;拷入和拷出对象必须具有相同的底层const资格,或者是非常量拷贝给常量。
用通俗易懂的话说就是,常量指针/引用可以指向/绑定非常量对象,但是非常量指针/引用不可以/绑定指向常量对象。
int i=0; const int ci=42;//顶层const const int *const p3=&ci;//顶层+底层cosnt const int *p2=&ci;//底层const int *p=p3;//错误,p3有底层const,但是p没有 p2=p3;//p2,p3都有底层cosnt,p3顶层不影响 p2=&i;//正确,非常量可以指向常量 int &r=ci;//错误,非常量不可以绑定常量
-
Const--来自C++ Primer 2.4的总结
最新推荐文章于 2024-09-26 09:13:29 发布
本文详细解释了C++中const关键字的用法,包括顶层const和底层const的区别,以及它们在指针、引用和对象拷贝中的角色。特别强调了const对象的初始化、访问权限和不同类型const的交互规则。
摘要由CSDN通过智能技术生成