对于tr1::shared_ptr在安装vs同一时候会自带安装,可是版本号较低的不存在。而boost作为tr1的实现品,包括

“Algorithms

Broken Compiler Workarounds

Concurrent Programming

Containers

Correctness and Testing

Data Structures

Domain Specific

Function Objects and Higher-order Programming

Generic Programming

Image Processing

Input/Output

Inter-language Support

Iterators

Language Features Emulation

Math and Numerics

Memory

Parsing

Patterns and Idioms

Preprocessor Metaprogramming

Programming Interfaces

State Machines

String and Text Processing

System

Template Metaprogramming

Miscellaneous ”

等一系列更安全、更丰富的c++函数或库的实现品。能够在官网下载,当中包括具体的API文档与例程。当中boost::shared_ptr是对tr1的shared_ptr的实现。作为智能指针(类指针对象)二者的用法相似。具体见下方代码。

头文件

#include <iostream>

using namespace std;

class Test
{
public:
Test();
~Test();
};

实现文件

#include "head.h"

Test::Test()
{
cout << "construct Test." << endl;
} Test::~Test()
{
cout << "destruct Test." << endl;
}

main文件

//boost中shared_ptr头文件
#include <boost/shared_ptr.hpp> //vs2005一并中安装的库是不带shared_ptr的
#include <memory>
#include "head.h" //实验tr1::shared_ptr
void test_shared_ptr()
{
cout << "I am tr1." << endl;
tr1::shared_ptr<Test> p_test(new Test());
} //实验boost/shared_ptr
void test_boost_shared_ptr()
{
cout << "I am boost." << endl;
boost::shared_ptr<Test> p_boost_test(new Test());
} int main()
{
test_shared_ptr();
cout << "**************************" << endl;
test_boost_shared_ptr(); system("pause");
}

运行效果:

上述两种方式是使用对象管理资源的最佳实现。标准库也提供了auto_ptr,可是这样的对象不可以复制。

对于使用对象管理资源的思路,C++t推荐的原则是RAII,即Resource aquisition is initialasition。

***************************************************************************

原创,本文链接:http://blog.csdn.net/u012150179/article/details/37965931

智能指针tr1::shared_ptr、boost::shared_ptr使用的更多相关文章

  1. c++智能指针(unique_ptr 、shared_ptr、weak_ptr、auto_ptr)

    一.前序 什么是智能指针? ——是一个类,用来存储指针(指向动态分配对象也就是堆中对象的的指针). c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写 ...

  2. c++智能指针的使用,shared_ptr,unique_ptr,weak_ptr

    c++智能指针的使用 官方参考 普通指针的烦恼:内存泄漏,多次释放,提前释放 智能指针 负责自动释放所指向的对象. 三种智能指针 shared_ptr,unique_ptr,weak_ptr: 将sh ...

  3. C++11智能指针(unique_ptr、shared_ptr、weak_ptr)(转)

    原文地址:https://blog.csdn.net/king_way/article/details/95536938

  4. C++ auto_ptr智能指针的用法

    C++中指针申请和释放内存通常采用的方式是new和delete.然而标准C++中还有一个强大的模版类就是auto_ptr,它可以在你不用的时候自动帮你释放内存.下面简单说一下用法. 用法一: std: ...

  5. 智能指针剖析(下)boost::shared_ptr&其他

    1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不 ...

  6. C++智能指针剖析(下)boost::shared_ptr&其他

    1. boost::shared_ptr 前面我已经讲解了两个比较简单的智能指针,它们都有各自的优缺点.由于 boost::scoped_ptr 独享所有权,当我们真真需要复制智能指针时,需求便满足不 ...

  7. 智能指针 shared_ptr 解析

    近期正在进行<Effective C++>的第二遍阅读,书里面多个条款涉及到了shared_ptr智能指针,介绍的太分散,学习起来麻烦.写篇blog整理一下. LinJM   @HQU s ...

  8. 智能指针auto_ptr & shared_ptr

    转载:智能指针auto_ptr 很多人听说过标准auto_ptr智能指针机制,但并不是每个人都天天使用它.这真是个遗憾,因为auto_ptr优雅地解决了C++设计和编码中常见的问题,正确地使用它可以生 ...

  9. 智能指针shared_ptr新特性shared_from_this及weak_ptr

    enable_shared_from_this是一个模板类,定义于头文件<memory>,其原型为: template< class T > class enable_shar ...

随机推荐

  1. 关于智能硬件设备shell安全设计

    问题描述: 在对某些智能硬件设备进行测试时,发现有些设备直接提供了Linux shell,并且登录账号默认是root权限!在登录到设备后,在bin目录下可以看到很多命令行程序,这些程序大部门用户用不到 ...

  2. dotnet若干说明图片

  3. CDHtmlDialog 基本使用

    跳转 Navigate("res://tt.exe/#138"); 138是html的资源号 输入框的Get,set HRESULT CTTDlg::OnButtonCancel( ...

  4. JS中eval函数的使用

    /*************************************************注册用户证件号 复选框 combox循环赋值**************************** ...

  5. [转]SSIS - Connect to Oracle on a 64-bit machine (Updated for SSIS 2008 R2)

    本文转自:http://sqlblog.com/blogs/jorg_klein/archive/2011/06/09/ssis-connect-to-oracle-on-a-64-bit-machi ...

  6. 安装Python3.6.x

    #安装依赖包 yum install zlib-devel bzip2-devel openssl-devel ncurses-devel -y #下载Python3.6.x wget https:/ ...

  7. 深度增强学习--DPPO

    PPO DPPO介绍 PPO实现 代码DPPO

  8. 入门教程: JS认证和WebAPI

    转自:http://www.jianshu.com/p/fde63052a3a5 本教程会介绍如何在前端JS程序中集成IdentityServer.因为所有的处理都在前端,我们会使用一个JS库oidc ...

  9. Geeks - Check whether a given graph is Bipartite or not 二分图检查

    检查一个图是否是二分图的算法 使用的是宽度搜索: 1 初始化一个颜色记录数组 2 利用queue宽度遍历图 3 从随意源点出发.染色0. 或1 4 遍历这点的邻接点.假设没有染色就染色与这个源点相反的 ...

  10. centos查看哪些包提供指定头文件

    [问题]:项目迁移时,原来在suse上正常的代码在centos上报错: g++ -g -Wall -fPIC -I../include -I./ -I../src -I/share/comm_ext ...