函数可以安全地返回对内部静态变量的引用吗?

时间:2015-03-27 03:16:07

标签: c++

当函数通过引用返回其自己的内部静态变量时它是否有效?

const int& f() {
    static int n=10;
    return n;
}

2 个答案:

答案 0 :(得分:1)

是的,这没有任何问题。特别是,当函数退出时,静态变量不会被销毁,因此它不会返回悬空引用(如果n不是静态的那样)。

请记住,它是一个静态变量,例如在此:

#include <iostream>

const int& f(int x) {
    static int n;
    n = x;
    return n;
}

int main() {
    const int &a = f(1);
    const int &b = f(2);
    cout << a << " " << b;
}

ab引用相同的变量,因此打印“2 2”而不是“1 2”。

答案 1 :(得分:0)

这很好。静态变量将在第一次执行函数时初始化,并且将超出函数的返回值。