MST

星途 面试题库

面试题:C++函数按引用传递与常量引用传递的性能和应用场景差异

在C++编程中,对于函数参数传递,解释按引用传递和按常量引用传递在性能上是否有差异。如果有,详细说明在不同应用场景下(如只读操作、可修改操作等),如何选择这两种传递方式以达到最佳性能,并给出具体的代码示例。
42.9万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 性能差异

    • 按引用传递和按常量引用传递在性能上通常没有显著差异。这两种方式本质上都是传递对象的地址,而不是对象本身的副本。因此,在传递大对象时,相比于按值传递(复制整个对象),它们都能显著提高性能。
  2. 不同应用场景下的选择

    • 只读操作
      • 推荐使用按常量引用传递。这样可以确保函数不会意外修改传入的对象,同时利用引用传递的高效性(避免对象复制)。
      • 代码示例:
#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;
}