函数参数传递分为值传递,引用传递和地址传递
std::string str:可以被修改,调用拷贝构造函数
std:string &str:可以被修改,不调用拷贝构造函数
const std::string str:不可以被修改,调用拷贝构造函数
const std::string &str:不可以被修改。不调用拷贝构造函数
加引用作为函数参数的话,str不会被复制一份,省了复制过程效率更高,但函数修改str值会影响调用者的原str值,所以在引用的基础上加上const修饰,这样函数试图修改str内容的时候就会报错。
https://www.cnblogs.com/chelseafan/p/15024284.html