解释下const引用形参?

所谓的const的含义, 就是该变量为"常数", 不应该也不会去修改它.

void fun(const int ival){
ival = 3; // 编译错误, 无法修改一个const对象.
}

void fun(const int& ival){ // 引用参数
ival = 3; // 编译错误, 无法修改一个const对象.
}
也就是说, 只要对象的声明中带有const标识, 任何有修改其值风险的行为编译器都会提醒你..

const T& 和const T的意义几乎是完全一样的.
但是后者, LZ也知道是要复制一份的, 对于某些巨型类来说复制的速度非常慢, 而且也会有些类型在设计e799bee5baa6e997aee7ad94e78988e69d8331333330343863上拒绝复制(比如说cin和cout).

这种时候为了提升效率, 就需要引用参数, 或者指针了.
如果有修改参数值的必要, 就用一般引用, 表示 "我这个函数有可能会修改你传递过来的参数"
如果仅仅读取参数值, 那么就用const引用, 表示 "我这个函数绝对不会修改你传递过来的参数"

但是, 对于int这样的小型的内置类型来说, 这2这几乎就真的没有差别了, 对于引用通常需要地址来传递, int类型占据的内存和地址一样或者更小(64位机器指针是64位大小)

当在函数形参中使用const关键字时,它的作用是告诉编译器该参数是只读的,不允许在函数内部修改该参数的值。这样做的好处是可以避免在函数中意外修改参数的值导致错误。比如在结构体传递过程中,如果结构体中的数据量较大,使用值传递会占用更多的内存,而使用const指针传递则只占用四个字节的内存,减少了内存的使用。同时,使用const关键字也可以让编译器在函数中检测出修改参数值的错误,并及时提示程序员进行修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C++成员函数后的const](https://download.csdn.net/download/weixin_38551431/13758262)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C++结构体做函数参数,结构体const使用场景](https://blog.csdn.net/weixin_45800887/article/details/107822406)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [结构体中添加const关键字来防止误操作](https://blog.csdn.net/qq_42190295/article/details/106859282)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值