唯一的区别是移动语义boost::scoped_ptr<T>和移动语义std::unique_ptr<T>的事实,std::unique_ptr<T>而boost::scoped_ptr<T>只是一个获取/重置智能指针?
我曾经写过这样的代码:
class P {};
class Q: public P {};
class A {
// takes ownership
A(P* p): p_(p) {}
scoped_ptr<P> p_;
};
A a(new Q);
Run Code Online (Sandbox Code Playgroud)
使用C++ 0x,我应该将A类重写为:
class A {
// takes ownership
A(unique_ptr<P>&& p): p_(p) {}
unique_ptr<P> p_;
};
Run Code Online (Sandbox Code Playgroud)