tr1::shared_ptr 代码范例

来源:互联网 发布:大数据产业链包括 编辑:程序博客网 时间:2024/04/30 11:32
#include <memory>
#include <iostream>
#include "vector"
#include "list"
#include "Person.h"
using namespace std;


//using namespace tr1;


// Cuse_autoDeleteDlg 对话框
typedef tr1::shared_ptr<CPerson> PtrPerson;

typedef tr1::weak_ptr<CPerson> PtrWeakPerson;  //expired()用于检测所管理的对象是否已经释放


// 声明变量

list<PtrPerson > m_vecPersons;


//初始化

m_vecPersons.push_back(PtrPerson(new CPerson));  
m_vecPersons.push_back(PtrPerson(new CPerson));
m_vecPersons.push_back(PtrPerson(new CPerson));
m_vecPersons.push_back(PtrPerson(new CPerson));
m_vecPersons.push_back(PtrPerson(new CPerson));


//调用

for (auto it = m_vecPersons.begin() ; it !=  m_vecPersons.end(); ++it)
{
PtrPerson& pPerson = (*it);


CString strOutput;
strOutput.Format(_T("%s,%d \n"),
pPerson->m_strName,pPerson->m_age);


OutputDebugString(strOutput);


TRACE(_T("use_count = %d \n"),pPerson.use_count());
}

m_vecPersons.clear(); //new出来的内存会自动释放


结论:

很实用的智能指针。

再也不用管理内存的delete问题了。



0 0
原创粉丝点击