const int *p、int *const p与const Test *p、Test *const p的区别

本文详细解析了C++中const与指针结合使用的三种情况,包括指向常量的指针、常量指针以及指向常量的常量指针的概念及应用,同时解释了在类成员函数中this指针的类型及其对常量对象的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、当const出现在 * 左边,例如const int *p或int const *p(无区别),表示被指向的值是常量。
2、当const出现在 * 右边,例如int * const p,表示指针本身是常量。
3、当const出现在 * 两边,表示被指向的值和指针本身都是常量。

1、const int *p: 此时const 修饰的是指向的值,因此相当于是一个指向常量的指针,*p是常量,因此:

*p = 100 //error 不能修改常量的值
p = & r //正确 可以给p赋予其他的地址

2、int * const p:此时const修饰的是指针本身,因此相当于是一个常量指针,p是常量指针,因此:

常量指针必须初始化
*p = 100 //正确 可以修改它所指向的值
p = & r //error 常量指针的指向不能修改

在c++的类成员函数中,每个成员方法中都有一个this指针,在Test类中,this指针的类型为Testconst this,它相当于是一个常量指针,在类中生成的常量对象(const Test)不能直接访问普通的成员函数(Test*),因此需要将普通成员函数声明成常量成员函数(const Test* const this)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值