C++中的const

注意:const修饰的是起右边的内容

    //const 修饰的是其右边的值
	int age = 20;
	//效果相同,*p0和*p1是常量,p0和p1不是常量
	const int *p0 = &age;
	int const *p1 = &age;

	//*p2不是常量,p2是常量
	int * const p2 = &age;

	//*p3和*p4是常量,p3和p4都是常量
	const int * const p3 = &age;
	int const * const p4 = &age;

易混淆:常量指针和指针常量

常量指针:const int *p

指针常量:int * const p

const 函数的几点规则

int func (int a) const

修饰类的成员函数,函数体内不能修改成员变量的值

如果想要在const修饰的类成员函数中修改成员变量的值,可以在成员变量前加mutable关键字,加上 mutable 修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的 const 成员函数是可以修改它的。 

1.const 对象只能访问 const 成员函数,而非 const 对象可以访问任意的成员函数,包括 const 成员函数.

2. const 对象的成员是不可修改的,然而 const 对象通过指针维护的对象却是可以修改的.

3. const 成员函数不可以修改对象的数据,不管对象是否具有 const 性质。它在编译时,以是否修改成员数据为依据,进行检查.

4. 然而加上 mutable 修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的 const 成员函数是可以修改它的。

普通 const 变量

1.const 修饰的量不是常量,仅仅是个只读常量。在编译的时候全部替换 const 变量被赋予的值(这点和 C 语言的宏相似),在运行的时候该 const 变量可通过内存进行修改。

2.const 只在编译期间保证常量被使用时的不变性,无法保证运行期间的行为。程序员直接修改常量会得到一个编译错误,但是使用间接指针修改内存,只要符合语法则不会得到任何错误和警告。因为编译器无法得知你是有意还是无意的修改,但是既然定义成 const,那么程序员就不应当修改它,不然直接使用变量定义好了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coder_Alger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值