-6

ここにコードがあります

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

int main() {

    fun() = 30;

    cout<< fun();

    getch();
}

出力は 30 です。これはどのように機能しますか?

4

3 に答える 3

6

それは簡単です:この行によって割り当てられた関数内の変数への参照fun返します:static30

fun() = 30;

これは、x関数内が に変更されることを意味し30ます。さらに何ですか?30です!fun()次の行で再度呼び出して印刷します。

静的変数はプログラムの最後まで存続することに注意してください: 関数が戻っても破棄されません!

于 2013-08-07T12:25:14.820 に答える
0

fun関数は型への参照を返しますint。このようにして、 を呼び出すとfun() = 30、実際にxは 30 に設定されます。このように出力すると、fun関数はそれを設定しなくなります。これは 1 回限りの宣言であるためです。

于 2013-08-07T12:27:43.540 に答える