我以前写过这样的代码:
class P {};
class Q: public P {};
class A {
// takes ownership
A(P* p): p_(p) {}
scoped_ptr<P> p_;
};
A a(new Q);
C++0x之后,我需要将类A重写为:
class A {
// takes ownership
A(unique_ptr<P>&& p): p_(p) {}
unique_ptr<P> p_;
};
boost::scoped_array
的方法? - rafakstd::unique_ptr
也适用于数组(它将调用delete[])。 - Cubbistd::unique_ptr<P[]>
。unique_ptr不仅在销毁时调用delete[],而且它禁用了*和->运算符,而提供了一个[]运算符。 - deft_code