【C++11能用智能指针】
shared_ptr
是一引用计数 (reference-counted) 指针,其行为与一般 C++ 指针即为相似。在 TR1 的实现中,缺少了一些一般指针所拥有的特色,像是别名或是指针运算。C++11新增前述特色。
一个 shared_ptr
只有在已经没有任何其它 shared_ptr
指向其原本所指向对象时,才会销毁该对象。
一个 weak_ptr
指向的是一个被 shared_ptr
所指向的对象。该 weak_ptr
可以用来决定该对象是否已被销毁。weak_ptr
不能被解参考; 想要访问其内部所保存的指针,只能通过 shared_ptr
。有两种方法可达成此目的。第一,类型 shared_ptr
有一个以 weak_ptr
为参数的构造函数。第二,类型weak_ptr
有一个名为 lock
的成员函数,其返回值为一个 shared_ptr
。weak_ptr
并不拥有它所指向的对象,因此不影响该对象的销毁与否。
底下是一个 shared_ptr
的使用样例:
参考:http://zh.wikipedia.org/wiki/C++0x#.E9.80.9A.E7.94.A8.E6.99.BA.E8.83.BD.E6.8C.87.E9.87.9D