Ita*_*iwa 3 c++ smart-pointers c++11
在C ++入门5版上。第12章动态内存:编写如下:
shared_ptr p(u); P承担所有权
uniqe_ptru; 使为u空。shared_ptr p(q,d)假定内置指针q指向的对象的所有权。q必须可转换为T*($ 4.11.2,第161页)。p将使用可调用对象d($ 10.3.2,p.388)代替deletefreeq。
unque_ptr内置对象的和来自于...”。有人可以向我解释这一段吗?非常感谢。
这本书的类型不明确。你需要一个右值裁判构建一个shared_ptr从unique_ptr:
Run Code Online (Sandbox Code Playgroud)template< class Y, class Deleter > shared_ptr( std::unique_ptr<Y,Deleter>&& r );
检查此代码:
unique_ptr<int> up{new int{10}};
shared_ptr<int> sp(move(up));
cout << *sp <<'\n';
//cout << *up <<'\n'; // up is nullptr
Run Code Online (Sandbox Code Playgroud)
Live ob Godbolt
智能指针管理它们拥有的原始指针的生命周期。unique_ptr不共享所有权,而共享shared_ptr。当您shared_ptr从中构造A时,unique_ptr您必须通过移动放弃其所有权,并且unique_ptr无法复制。
我认为通过使用“假定所有权”,作者想指出,如果您以某种方式修改智能指针所拥有的指针,仍然会发生不好的事情。
| 归档时间: |
|
| 查看次数: |
50 次 |
| 最近记录: |