What are potential dangers when using boost::shared_ptr?

后端 未结 13 903
猫巷女王i
猫巷女王i 2020-12-02 07:42

What are some ways you can shoot yourself in the foot when using boost::shared_ptr? In other words, what pitfalls do I have to avoid when I use boost::shared_ptr?

13条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2020-12-02 08:29

    Creating multiple unrelated shared_ptr's to the same object:

    #include 
    #include "boost/shared_ptr.hpp"
    
    class foo
    {
    public:
        foo() { printf( "foo()\n"); }
    
        ~foo() { printf( "~foo()\n"); }
    };
    
    typedef boost::shared_ptr pFoo_t;
    
    void doSomething( pFoo_t p)
    {
        printf( "doing something...\n");
    }
    
    void doSomethingElse( pFoo_t p)
    {
        printf( "doing something else...\n");
    }
    
    int main() {
        foo* pFoo = new foo;
    
        doSomething( pFoo_t( pFoo));
        doSomethingElse( pFoo_t( pFoo));
    
        return 0;
    }
    

提交回复
热议问题