中国开发网: 论坛: 程序员情感CBD: 贴子 479604
holly
看来偶也只能用事实教育你了
lee@ub6:~$ vi c.cpp

#include <iostream>
#include <memory>

class Nest
{
public:
Nest() { std::cout << "Nest ctor." << std::endl; }
~Nest() { std::cout << "Nest dtor." << std::endl; }
};

class Outer
{
private:
std::auto_ptr<Nest> nestPtr;

public:
Outer()
{
std::cout << "Outer ctor." << std::endl;
nestPtr = std::auto_ptr<Nest>(new Nest());
throw "exception";
}

~Outer()
{
std::cout << "Outer dtor." << std::endl;
}
};

int main()
{
std::auto_ptr<Outer> outerPtr;

try {
outerPtr = std::auto_ptr<Outer>(new Outer());
}
catch (...) {
std::cout << "Exception catched." << std::endl;
}

return 0;
}

lee@ub6:~$ g++ c.cpp
lee@ub6:~$ ./a.out
Outer ctor.
Nest ctor.
Nest dtor.
Exception catched.
lee@ub6:~$

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录