C++11 从本地原始指针初始化std::unique_ptr安全吗?

C++11 从本地原始指针初始化std::unique_ptr安全吗?,c++11,smart-pointers,unique-ptr,C++11,Smart Pointers,Unique Ptr,我知道用std::shared\u ptr这样做是不明智的。但是关于std::unique\u ptr呢?例如: class A { public: void do_something() { }; }; std::vector<std::unique_ptr<A> > uq_ptrs_; auto p = new A(); uq_ptrs_.push_back(std::unique_ptr<A>(p)); p->do_something();

我知道用
std::shared\u ptr
这样做是不明智的。但是关于std::unique\u ptr呢?例如:

class A {
 public:
  void do_something() { };
};

std::vector<std::unique_ptr<A> > uq_ptrs_;
auto p = new A();
uq_ptrs_.push_back(std::unique_ptr<A>(p));
p->do_something();
A类{
公众:
void do_某物(){};
};
std::向量uq_ptrs;
自动p=新A();
uq_ptrs_u.push_back(标准::唯一的_ptr(p));
p->dou_某事();

只要在创建
std::unique_ptr
(或
std::shared_ptr
!)对象后不手动
删除
对象,就可以了


当您要求
std::unique_ptr
(或
std::shared_ptr
)拥有指针所有权时,还应避免取消对指针的引用。使用智能指针对象。

只要在创建
std::unique_ptr
(或
std::shared_ptr
)对象后不手动
删除
对象,就可以了


当您要求
std::unique_ptr
(或
std::shared_ptr
)拥有指针所有权时,还应避免取消对指针的引用。而是使用智能指针对象。

我在示例中添加了更多行。根据您新添加的注释,
p->do_something()
不应该存在?@duong\u dajgja只要
std::unique\u ptr
对象仍然存在,那么您就可以像使用原始指针一样使用它。不过,我强烈建议不要这样做。我还强烈建议您不要像对待原始的非所有权指针那样,稍后将所有权移动到
std::unique\u ptr
。而是从一个
std::unique\u ptr
开始。您所做的是说
p
指向的对象属于新的
std::unique\u ptr
对象。我在示例中添加了更多行。根据您新添加的注释,
p->do_something()
不应该存在?@duong\u dajgja只要
std::unique\u ptr
对象仍然存在,那么您就可以像使用原始指针一样使用它。不过,我强烈建议不要这样做。我还强烈建议您不要像对待原始的非所有权指针那样,稍后将所有权移动到
std::unique\u ptr
。而是从一个
std::unique\u ptr
开始。您所做的是说由
p
指向的对象属于新的
std::unique\u ptr
对象。的可能副本的可能副本