Гарантировано ли выполнение уничтожения автоматических объектов (объектов, созданных в стеке) не раньше, когда они выйдут за пределы области видимости?
Чтобы уточнить:
#include <iostream>
class A {
public:
A() {
std::cout << "1";
}
~A() {
std::cout << "3";
}
};
void test123() {
A a;
std::cout << "2";
}
Чтобы напечатать "2"
, a
больше не требуется, поэтому теоретически компилятор может попытаться оптимизировать и уничтожить a
, как только он больше не нужен.
Могу ли я полагаться на указанную выше функцию, всегда печатающую 123
?
a
в любое время после последней ссылки, которая в данном случае будет следующей строкой. Однако в C++, как упоминалось ниже, это строго определено. - person Mike Caron   schedule 29.08.2011