假设我有一个简单的函数:
void foo(int val) {
if(val == 0) {
return;
}
else {
stringstream ss;
ss << "Hello World" << endl << ends;
cout << ss.str();
}
}
如果我用 val == 0
调用函数,字符串流对象 ss 是否会被构造? 我怀疑没有,但只是想确认一下。
这正是
C/C++ 中的作用域的用处:不构造你不想被构造的对象。
在这里,只有当您穿透由else
大括号定义的范围时,才能构造您的stringstream
对象。
所以不,如果val == 0
,您的对象将不会被构造。
由于程序不会运行到这一点,因此不会构造此字符串流。