C++中关于const,&修饰变量或形参的思考

这个需要单独开一个博客来说明,因为它在我第一次向C++“宣战”的时候就把我卡住了。
我的问题:

形参const vector<int> &vec这是什么意思,都const了怎么还要引用,能怎么修改。。。。求解释,谢谢

大佬的解释:
用引用(&)是为了避免拷贝,用const是避免修改,但是const不代表不能遍历这个vector,读还是可以的
const变量保证任何值能传给它,包括const

我再提问:就是说&形参的话不光能修改实参还能免去对对象的拷贝占用程序堆栈?
大佬的解释:
看你的这个参数多大吧,如果是char/int这样的,没必要出于避免拷贝的原因去用引用
如果你会修改实参,还是用指针更好:假如别人来debug,可以一眼注意到要小心的地方。如果是用引用,修改实参的意图就没那么明显
函数变量一般声明为const &,可以保证通用性
我提问:通用性是什么?
大佬的解释:
const和非const都能传给它
除非你要修改它,只能牺牲通用性,声明为&

  • 从上面的对话中,可以看出,&除了方便修改实参外还有一个功能就是免去copy实参,这样我可以减少程序堆栈的空间使用,提升程序效率
    const除了避免修改其对应的对象外,还有一点是增加程序可读性,读者看见了const知道该对象只能读取,不能修改了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值