std::shared_ptr
生活随笔
收集整理的這篇文章主要介紹了
std::shared_ptr
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
/*auto_ptr:會發(fā)生語義轉(zhuǎn)移,不支持應(yīng)用計(jì)數(shù)
scoped_ptr:不支持復(fù)制,只有自己可以管理指針
scoped_array:支持?jǐn)?shù)組
shared_ptr:最好的智能指針,支持引用計(jì)數(shù),容器操作等,復(fù)制指針時(shí)引用計(jì)數(shù)加一,當(dāng)復(fù)制的對象析構(gòu)時(shí)引用計(jì)數(shù)減1,當(dāng)引用計(jì)數(shù)為0是析構(gòu)對象
*/#include <memory>
#include <iostream>
using namespace std;
class shared
{
private:shared_ptr<int> p;
public:shared(shared_ptr<int> _p):p(_p){}void print(){cout << "count:" << p.use_count() << "v = " << *p << endl; }
};void print_func(shared_ptr<int> p)
{cout << "count:" << p.use_count() << "v = " << *p << endl;
}//退出函數(shù)時(shí),p自動(dòng)析構(gòu),引用計(jì)數(shù)減1int main()
{shared_ptr<int> p(new int(100));shared s1(p);{shared s2(p);s2.print();//3
}s1.print();//2*p = 20;print_func(p);//3s1.print();//2
getchar();
}
//我一直想知道shared_ptr和auto_ptr什么區(qū)別,現(xiàn)在總算清楚了
//我一直想知道shared_ptr和auto_ptr什么區(qū)別,現(xiàn)在總算清楚了
總結(jié)
以上是生活随笔為你收集整理的std::shared_ptr的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET MVC中使用Fluent
- 下一篇: GLSL实现HDR Rendering