【发布时间】:2011-03-02 11:05:19
【问题描述】:
我以前写过这样的代码:
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是否有 C++0x 替代品? -
@rafak
std::unique_ptr也适用于数组(它将调用 delete[]) -
@rafak:像这样使用 unique_ptr
std::unique_ptr<P[]>。 unique_ptr 不仅会在释放时调用 delete[],而且会禁用 * 和 -> 运算符,而是提供 [] 运算符。
标签: c++ smart-pointers c++11