[阅读: 425] 2007-03-05 04:56:39
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:~$