Скажем, у меня есть простая функция:Когда объект стека внутри построенного вызова функции?
void foo(int val) {
if(val == 0) {
return;
}
else {
stringstream ss;
ss << "Hello World" << endl << ends;
cout << ss.str();
}
}
Если я вызываю функцию с val == 0
, делает stringstream объект SS когда-нибудь построили? Я подозреваю, что нет, но просто хочу подтвердить.
Нет, 'ss' не создается, поскольку он находится в другом объеме, который никогда не вводится. – callyalater
Легко сказать: просто поместите класс, который вы написали, вместо 'stringstream' (например, расширите' stringstream'), и пусть его конструктор и деструктор выводят некоторые сообщения. Вы можете точно определить момент, когда каждый объект создается и разрушается. – axiac
@axiac, это умный трюк. Я попробую, чтобы в следующий раз я хочу посмотреть, будет ли объект создан. – PentiumPro200