【C++ Primer】
创新互联公司坚持“要么做到,要么别承诺”的工作理念,服务领域包括:成都做网站、网站建设、企业官网、英文网站、手机端网站、网站推广等服务,满足客户于互联网时代的望江网站设计、移动媒体设计的需求,帮助企业找到有效的互联网解决方案。努力成为您成熟可靠的网络建设合作伙伴!shared_ptr:
除了make_shared那种方法(make_shared更好),还可以用new返回的指针来初始化智能指针,例如shared_ptr
reset函数有三种,p.reset(),p.reset(q),p.reset(q, d)。如果p是唯一指向其对象的shared_ptr,那么reset会释放此对象。如果传递了一个内置指针q,会令p指向q,否则会将p置为空。若还传递了参数d,将会调用d而不是delete来释放q。前面说了不能将一个内置指针赋予shared_ptr,但用reset将一个新的指针赋予一个shared_ptr是可以的,比如p.reset(new int(1024));
不要混用普通指针和智能指针,使用一个内置指针来访问一个智能指针所负责的对象是很危险的,因为我们不知道对象何时会被销毁。
unique_ptr:
某个时刻只能有一个unique_ptr指向一个给定对象,当unique_ptr被销毁时,它所指向的对象也被销毁。定义方法:unique_ptr
u.release()表示u放弃对指针的控制权,返回指针,并将u置为空。
u.reset()表示释放u指向的对象,如果提供了内置指针如u.reset(q),则令u指向这个对象,否则将u置为空。虽然我们不能拷贝或赋值unique_ptr,但可以通过调用release或reset将指针的所有权从一个(非const)unique_ptr转移给另一个unique_ptr,例如:
unique_ptr
unique_ptr
unique_ptr
p2.reset(p3.release()); // reset释放了p2原来指向的对象(也就是"hello"),然后把p3对指针(指向"hi")的所有权转移给p2
weak_ptr:
是一种不控制所指对象生存期的智能指针,它指向一个shared_ptr管理的对象。创建一个weak_ptr时是用一个shared_ptr来初始化它,创建的weak_ptr不会改变shared_ptr的引用计数,weak_ptr指向的对象可能被释放掉。由于对象可能不存在,所以我们不能使用weak_ptr直接访问对象,而必须调用lock(),此函数检查weak_ptr指向的对象是否仍存在,如存在,返回一个指向共享对象的shared_ptr。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧