Loading

C++中函数的参数加了&和const的作用

例如下面这段代码

fun(int* in, const std::string& str)
{

}
  • 不加引用的话,str则被复制一份,函数中对str的操作实质上是对其复制品的操作,所以即使在函数中修改了str,调用层的原str并不会被改变。
  • 加了引用的话,传入的str即是调用层的实际参数,这样省却了复制过程,效率会有提高。但如果函数中修改了str,则原str也会改变,因为其实是同一个东西。
  • 有时候为了追求效率(防止传值时拷贝构造函数的调用开销),又希望避免改变原来的str,则可在引用的基础上加const修饰,这样函数中就不能再修改str的内容(否则会编译出错)。
posted @ 2021-07-17 17:17  想睡觉的人  阅读(524)  评论(0编辑  收藏  举报