栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 中boost::share_ptr智能指针的使用方法

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 中boost::share_ptr智能指针的使用方法

C++ 中boost::share_ptr智能指针的使用方法

最近项目中使用boost库的智能指针,感觉智能指针还是蛮强大的,在此贴出自己学习过程中编写的测试代码,以供其他想了解boost智能指针的朋友参考,有讲得不正确之处欢迎指出讨论。当然,使用boost智能指针首先要编译boost库,具体方法可以网上查询,在此不再赘述。

智能指针能够使C++的开发简单化,主要是它能够自动管理内存的释放,而且能够做更多的事情,即使用智能指针,则可以再代码中new了之后不用delete,智能指针自己会帮助你管理内存资源的释放。

Boost库的智能指针有很多种,下面通过示例代码来说明其中share_ptr的使用方法。    

/ test.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include 
#include 
#include 
 

class CTest
{
public: 
   
    
    CTest(int m)
    {
 m_member = m;
 
  
 m_pname = new char[2];
    }
    
    ~CTest()
    {
 delete m_pname;
    }
 
     
    int getMember()
    {
 return m_member;
    }
 
private:
 
     
    int m_member;
    char * m_pname;
   
};
 
int _tmain(int argc, _TCHAR* argv[])
{
 
 
 
     
     
 
    
     
    boost::shared_ptr pTemp(new CTest(10));
 
     
     
    boost::shared_ptr pSecond = pTemp;
 
     
    std::cout << pTemp->getMember() << std::endl;
 
    
    pTemp.reset();
 
     
    pSecond.reset();
 
 
 
    
 
     
    CTest * pATest = new CTest(100);
     
    boost::shared_ptr pShareTest(pATest);
 
     
    delete pATest;
 
     
    pShareTest.reset();
 
 
 
 
    
     
    std::vector > vec;
 
     
 
    {
 
 boost::shared_ptr pTemp(new CTest(2));
 
  
 vec.push_back(pTemp);
 
  
    }
 
     
    std::vector >::iterator itor = vec.begin();
 
     
    std::cout << (*itor)->getMember()<> temp;
 
 
    return 0;
}
 
 
 
// 1. 智能指针其实是一种类对象,并不是简单的指针,故当智能指针包含另一个类的对象时,
//    需要包含另一个类的头文件,而不能简单的使用前向引用声明
// eg: CMyClass.h文件
 
 #include "CTest.h"
  
 // 前向引用声明 class CTest
 
class CMyClass
{
public:
 
private:
    boost::shared_ptr m_pTest;
 
};
 
// 2. shared_ptr 是线程安全的
 
// 3. 使用智能指针出现循环引用的情况
// 即两个类互相含有对方类对象的智能指针

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/63173.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号