面试题答案
一键面试-
性能差异:
- 按引用传递和按常量引用传递在性能上通常没有显著差异。这两种方式本质上都是传递对象的地址,而不是对象本身的副本。因此,在传递大对象时,相比于按值传递(复制整个对象),它们都能显著提高性能。
-
不同应用场景下的选择:
- 只读操作:
- 推荐使用按常量引用传递。这样可以确保函数不会意外修改传入的对象,同时利用引用传递的高效性(避免对象复制)。
- 代码示例:
- 只读操作:
#include <iostream>
#include <string>
void printString(const std::string& str) {
std::cout << str << std::endl;
}
int main() {
std::string myString = "Hello, World!";
printString(myString);
return 0;
}
- 可修改操作:
- 应使用按引用传递。因为函数需要对传入的对象进行修改,常量引用不允许修改操作。
- 代码示例:
#include <iostream>
#include <string>
void appendExclamationMark(std::string& str) {
str += "!";
}
int main() {
std::string myString = "Hello";
appendExclamationMark(myString);
std::cout << myString << std::endl;
return 0;
}