C++中函数返回值为引用类型有什么作用?

函数返回值是引用类型主要三个场景:

  1. 函数返回值是一个很大的数据结构,避免拷贝开销;

  2. 实现函数的链式赋值操作,此时函数需要作为一个左值,经典的例子有:

    1. std::cout << "hello, world" << std::endl;实际上执行的代码逻辑是: std::cout.operator<<("hello, world").operator<<(std::endl);
    2. operator[]:当随机访问运算符需要实现赋值功能是,函数也需要是一个左值,因此函数需要返回引用类型;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    vector<int>& addElement(vector<int>& vec, int value) {
    vec.push_back(value);
    return vec;
    }

    int main() {
    vector<int> numbers;
    addElement(numbers, 5).push_back(10).push_back(15);
    // 现在numbers中有三个元素:5, 10, 15
    return 0;
    }
  3. 另外在成员函数中,可以直接返回成员变量的引用,对于单一的 get_xx()场景比较有效。