MST

星途 面试题库

面试题:C++ 中函数按常量引用传递的优势及应用场景

请阐述在 C++ 里函数按常量引用传递参数有哪些优势,并举例说明至少两个适用这种传递方式的场景。
28.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试

优势

  1. 提高效率:避免了对象的拷贝构造和析构过程,对于大型对象或构造/析构开销大的对象,能显著提升性能。例如传递一个包含大量数据成员的自定义类对象。
  2. 保护数据:防止函数内部意外修改传入的参数值,保证数据的完整性和安全性。

适用场景

  1. 读取大型数据结构:当函数只需要读取一个大型容器(如std::vectorstd::map)的数据时,按常量引用传递可避免拷贝。
#include <iostream>
#include <vector>

void printVector(const std::vector<int>& vec) {
    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;
}
  1. 传递自定义复杂类对象:对于自定义的复杂类,其构造和析构可能开销较大,按常量引用传递既能提高效率又能防止数据被修改。
class BigObject {
    int data[10000];
public:
    BigObject() {
        for (int i = 0; i < 10000; ++i) {
            data[i] = i;
        }
    }
};

void processObject(const BigObject& obj) {
    // 处理obj,但不会修改它
}