C++11 shared_ptr, weak_ptr速成,以及放在stl集合类里面的注意点。

时间:2023-02-07 17:01:55

shared_ptr的初始化


shared_ptr<int> a(new int(6));


shared_ptr的操作

shared_ptr<A> a = A::create();
a.get();  得到 A*
a.reset();  不再引用A*

shared_ptr<A> aa = A::create();
bool aaa = a < aa;
b = a;

b.expired();  ==>引用的对象是否已经无效了
b.lock(); ==> 得到shared_ptr<A>
b.reset();  ==>不再引用A*


enable_shared_from_this<A>是一个模板类。它的方法 shared_from_this() 可以获得 shared_ptr<A>指针。必须先有其他活着的shared_ptr<A>实例才能调用shared_from_this


shared_ptr<A>直接用在std::set等容器种时,默认使用的比较操作 < 比较的是指针值。如果需要比较引用的<,需要自定义比较子函数对象。