C++中的const修饰词总结

本文详细解析了C++中const修饰符的各种应用场景,包括修饰一般变量、指针、函数及成员函数等,并介绍了如何将const类型转换为非const类型。

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

1、const修饰一般变量时:

使用const修饰的变量为常量,常量只有在声明时能被定义,且在此之后无法被修改。对于被修饰被const的类成员变量,只能在构造函数中以附加初始化列表的形式,也就是class():xxx()yyy(){}来进行初始化。

2、const修饰指针时:

const int *a等价于int const *a,表示a是一个指向常量的指针,作用就是*a无法作为作值,至于指向的int到底是不是const?并不重要。

一个阅读指针的trick:从右往左读,const int *a:a->point to->int const。这里int const和const int是一样的,const无所谓前还是后。

而int * const a则表示a是一个指向int的常量指针,意思是,这个指针只能指向那个int了,所以这条声明在声明的同时也要对所指向的目标进行定义。当然,这里跟上面不一样的时,它只能指向非const的int,要想指向const int要用:const int* const a。

3、const int foo():

修饰函数,则返回值是一个const int,这个返回值就不能再被改了。同理const int*、int const *和int* const,前两者指向的变量不能被修改,但可以指向新的变量,后者只能指向已经指向的变量,但可以改变被指向变量的值。

4、只在class中出现的class::int foo() const:

表示foo是class类中的一个常成员函数,常成员函数的特点是其不能修改成员变量的值,这包含2层含义:1、不能直接修改;2、不能调用其它函数简介修改。第一点是容易保证的,只要检查函数本身即可,第二点难以保证,因此要求常成员函数只能调用常成员函数,不能调用包含风险的非常成员函数。

5、int foo(const int &a):

意思是,甭管在外面a是啥样,传进来以后就得是const的了,至少在这个函数里面a是不能被修改的。

6、怎么把一个const转换为非const呢?用const_cast<new_tpye>()。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值