4

私は単純な関数を持っているとしましょう:

void foo(int val) {
    if(val == 0) {
       return;
    }
    else {
      stringstream ss;
      ss << "Hello World" << endl << ends;
      cout << ss.str();
   }
}

で関数を呼び出した場合val == 0、stringstream オブジェクト ss は構築されますか? いいえと思いますが、確認したいだけです。

4

2 に答える 2

4

これはまさに、C/C++ でのスコープの有用性です: 構築したくないオブジェクトを構築しないためです。

ここでは、中かっこstringstreamで定義されたスコープ内に侵入した場合にのみ、オブジェクトが構築されます。else

いいえ、オブジェクトは構築されません if val == 0.

于 2016-03-03T23:17:07.500 に答える
1

プログラムはこの時点まで実行されないため、この文字列ストリームは構築されません。

于 2016-03-03T23:17:15.370 に答える