这个需要单独开一个博客来说明,因为它在我第一次向C++“宣战”的时候就把我卡住了。
我的问题:
形参
const vector<int> &vec
这是什么意思,都const了怎么还要引用,能怎么修改。。。。求解释,谢谢
大佬的解释:
用引用(&)是为了避免拷贝,用const是避免修改,但是const不代表不能遍历这个vector,读还是可以的
const变量保证任何值能传给它,包括const
我再提问:就是说&形参的话不光能修改实参还能免去对对象的拷贝占用程序堆栈?
大佬的解释:
看你的这个参数多大吧,如果是char/int这样的,没必要出于避免拷贝的原因去用引用
如果你会修改实参,还是用指针更好:假如别人来debug,可以一眼注意到要小心的地方。如果是用引用,修改实参的意图就没那么明显
函数变量一般声明为const &,可以保证通用性
我提问:通用性是什么?
大佬的解释:
const和非const都能传给它
除非你要修改它,只能牺牲通用性,声明为&
- 从上面的对话中,可以看出,&除了方便修改实参外还有一个功能就是免去copy实参,这样我可以减少程序堆栈的空间使用,提升程序效率
const除了避免修改其对应的对象外,还有一点是增加程序可读性,读者看见了const知道该对象只能读取,不能修改了。