当函数通过引用返回其自己的内部静态变量时它是否有效?
const int& f() {
static int n=10;
return n;
}
答案 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;
}
a
和b
引用相同的变量,因此打印“2 2”而不是“1 2”。
答案 1 :(得分:0)
这很好。静态变量将在第一次执行函数时初始化,并且将超出函数的返回值。