智能指针析构函数与构造函数的顺序
class A {
A() {
std::cout << " init" << std::endl;
}
~A() {
std::cout << "close" << std::endl;
}
};
int main () {
std::shared_ptr<A> ptr = std::make_shared<A>();
ptr = std::make_shared<A>();
return 0;
}
结果
init
init
close
close
智能指针会先调用构造函数,然后调用前一个对象的析构函数。

浙公网安备 33010602011771号