5

誰でも出力を説明できますか?

#include<iostream>

using namespace std;  

int &fun(){   
  static int x = 10;   
  return x;   
} 

int main(){         
  fun() = 30;
  cout << fun();          
  return 0;         
}

出力は 30

4

4 に答える 4

2

呼び出すとfun()、静的変数が作成され、その参照が返されます。基本的に のおかげでstatic、関数のスコープを抜けても変数は破棄されません。30 で参照に影響を与え、関数を呼び出すと 30 になります (2 番目の呼び出しの x は最初の呼び出しとまったく同じです)。この場合、基本的に static はグローバル変数のように機能します。

于 2012-08-21T09:31:48.650 に答える
0

AS fun は関数への参照であるため、この行を記述する fun() = 30;と、戻り値に 30 が格納されxます。これが、出力を 30 として取得する理由です。

于 2012-08-21T09:23:56.600 に答える