誰でも出力を説明できますか?
#include<iostream>
using namespace std;
int &fun(){
static int x = 10;
return x;
}
int main(){
fun() = 30;
cout << fun();
return 0;
}
出力は 30
呼び出すとfun()
、静的変数が作成され、その参照が返されます。基本的に のおかげでstatic
、関数のスコープを抜けても変数は破棄されません。30 で参照に影響を与え、関数を呼び出すと 30 になります (2 番目の呼び出しの x は最初の呼び出しとまったく同じです)。この場合、基本的に static はグローバル変数のように機能します。
AS fun は関数への参照であるため、この行を記述する
fun() = 30;
と、戻り値に 30 が格納されx
ます。これが、出力を 30 として取得する理由です。