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大括号定义)时才会被构建。

所以不,如果val == 0.

于 2016-03-03T23:17:07.500 回答
1

由于程序不会运行到这一点,因此不会构造此字符串流。

于 2016-03-03T23:17:15.370 回答