面试题答案
一键面试优点
- 避免数据拷贝:对于大型对象,按值传递会进行对象的完整拷贝,开销较大。而按常量引用传递,实际上传递的是对象的地址,不会产生额外的数据拷贝,大大提高了效率。
- 保护数据:声明为常量引用,确保在函数内部不会修改传入的参数,保证了只读数据的安全性。
示例代码
#include <iostream>
#include <string>
// 函数接受一个常量引用参数
void printString(const std::string& str) {
std::cout << str << std::endl;
}
int main() {
std::string longString = "This is a very long string that we don't want to copy unnecessarily.";
printString(longString);
return 0;
}
在上述代码中,printString
函数接受一个 const std::string&
类型的参数。当 main
函数调用 printString(longString)
时,不会对 longString
进行拷贝,而是通过引用直接操作原对象,同时由于 const
修饰,函数内部无法修改 str
。