const限定符

顶层const 与 底层const

底层const 指指向的对象为const,只有在引用和指针的修饰中出现。(const T *) ,英文为 low-level const 。
顶层const 指对象本身为const 。(const T),英文为 top-level const。

const * const int p;
我理解top-level 就是离变量名最近的const,low-level const 为离标识符较远的cosnt,比如 * 左边的这个const 
const T* 与 T*const
//////////////////////
 const T* 表示指向的对象为常量,指针本身是变量
 T* const 表示指针本身为常量,指向的对象为变量
/////////////////////
 T*const* 当出现这种比较怪的修饰的时候,把它分开看就行
 T*const* 分为  T*const 一个类型 , *一个类型,*表示
 它是一个指针,T*const 表示它指向的对象的类型。综上它是
 一个 指向 T*const 类型的一个指针变量。T*const 类型
 则是一个指向T类型的常量指针
C++类const

当我们定义一个类对象为const的类对象的时候,这个时候其实这个const 修饰的是this指针,这个const 就是一个顶层const,经过修饰后this指针执行的对象为const对象,这样就不能修改this指针指向的成员变量进而不能修改类对象。
这就引发了,如果我们定义一个类对象为const类型,这个const 对象只能调const 成员函数,非const成员函数不可调用,因为普通对象this 为 this * const ,而const 对象的 this指针为 const this * const ,从上面的介绍可看出顶层const 不可忽略,所以const 对象不可调用普通的成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值