1、 所在的头文件
2、share_ptr的三种初始化方法
a、 通过一个指向堆上申请的空间的指针初始化(切记不要用栈上的指针,否则,当智能指针全部释放控制权(栈中的对象离开作用域本身就会析构一次),将会析构对象,导致出错)
int a = new int(100); std::shared_ptr ptr(a); //我们不能写成std::shared_ptr ptr = a;这样写错误,不行你编译运行看下,编译不过
b、通过make_shared函数得到
std::shared_ptr<int> ptr1 = std::make_shared<int>(15);
c、 拷贝初始化
std::shared_ptr<int> ptr2(ptr1); //std::shared_ptr<int> ptr2 = ptr1;这样赋值是错误的,只要是智能指针,这样直接用=赋值是有问题的必须std::shared_ptr<int> ptr2(ptr1);
3、reset函数
当只能指针调用了reset函数的时候,就不会再指向这个对象了,所以如果还有其它智能指针指向这个对象,那么另外一个智能指针的use_count()函数结果会减1。