自动对象(在堆栈上创建的对象)的销毁是否保证不会在超出范围之前执行?
澄清:
#include <iostream>
class A {
public:
A() {
std::cout << "1";
}
~A() {
std::cout << "3";
}
};
void test123() {
A a;
std::cout << "2";
}
不再需要print "2"
,因此理论上编译器可以在不再需要它时a
尝试优化和销毁。a
我可以依靠上述功能始终打印123
吗?