diff --git a/cpp/shared_ptr/main.cpp b/cpp/shared_ptr/main.cpp new file mode 100644 index 0000000..b66da12 --- /dev/null +++ b/cpp/shared_ptr/main.cpp @@ -0,0 +1,28 @@ +#include + +class Foo { + public: + boost::shared_ptr s_ptr; + boost::weak_ptr w_ptr; + + Foo () + { + std::cout << "Foo (): allocate big piece by " << this << std::endl; + } + ~Foo () + { + std::cout << "~Foo (): deallocate the piece by " << this << std::endl; + } +}; + +int main (int argc, char *argv[]) +{ + boost::shared_ptr foo (new Foo); + + if (1 < argc ? argv[1][0] - '0' : 0) + foo->s_ptr = boost::shared_ptr (foo); + else + foo->w_ptr = boost::weak_ptr (foo); + + return 0; +}