`
soulwzy
  • 浏览: 15721 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

Boost::Shared_ptr初学

 
阅读更多
#include "boost/shared_ptr.hpp"
#include <vector>
#include <iostream>


//boost的shared_ptr 是一种智能指针,
//可以根据其被引用的次数进行智能释放,当被引用次数为0的时候自动释放,
//这个功能和iphone上面编程,objective-c里的功能有所类似。


class shared
{
private:
	boost::shared_ptr<int> p ;    //声明一个成员,智能指针p,我们将准备让它指向一个int型的空间

public:
	shared(boost::shared_ptr<int> p_):p(p_){}    //构造函数(另一种构造方式)

	void print()
	{
		std::cout<<"count:"<<p.use_count()<<"v="<<*p<<std::endl;  //use_count即被引用次数
	}
};


void print_func(boost::shared_ptr<int> p)
{
	std::cout<<"count:"<<p.use_count()<<"v="<<*p<<std::endl;
}
 

int main()
{
	boost::shared_ptr<int> p(new int(100));

	std::cout<<p.use_count()<<std::endl;     //刚被创建的时候,引用次数为1

	shared s1(p),s2(p);   //直接值传递进行拷贝,拷贝两次,引用次数多到3
	s1.print();
	s2.print();

	*p=20;  //改变所指向空间的内容
 	print_func(p);    //这里又有一次值传递,所以这里引用次数达到4
	s1.print();    //上面的函数执行完之后,退出,所以引用次数又回到3

}

分享到:
评论

相关推荐

    boost_1_53_0.tar.gz

    其次,Boost库中的智能指针(如boost::shared_ptr和boost::unique_ptr)在C++11标准中被采纳,成为std::shared_ptr和std::unique_ptr。这些智能指针管理对象生命周期,避免内存泄漏,提高了代码的安全性。在boost_1_...

    SmartPointer.zip

    `shared_ptr`是C++11标准之前 Boost 提供的一种智能指针,它采用了引用计数的方式来管理对象的生命周期。当一个`shared_ptr`被创建时,它会增加目标对象的引用计数;当`shared_ptr`被销毁或者赋值给其他`shared_ptr`...

    boost_1_78_0-编译完成的vs-2017-32and64以及使用说明

    例如,`boost::shared_ptr`是一种智能指针,可以自动管理对象的生命周期,防止内存泄漏。`boost::thread`库提供了线程管理功能,允许编写多线程程序。`boost::asio`库是进行异步I/O操作的强大工具,适用于网络编程。...

    boost_1_46_1

    1. **智能指针**:Boost库引入了智能指针(如shared_ptr, unique_ptr, weak_ptr),它们是C++原生指针的替代品,能够自动管理对象的生命周期,防止内存泄漏,增强了代码的安全性。 2. **函数对象和绑定器**:Boost....

    智能指针最全资料-5篇经典讲义

    接下来,Boost库中的智能指针,如`boost::shared_ptr`和`boost::unique_ptr`,在C++11之前是广泛使用的。它们的功能与C++11标准库中的对应智能指针类似,但在某些方面具有更丰富的特性和可定制性。例如,`boost::...

    boost_1_75_0.tar.gz

    例如,`shared_ptr`、`unique_ptr`和`weak_ptr`等。 2. **多线程支持**(Thread):提供了跨平台的多线程编程接口,包括线程管理、互斥量、条件变量等。 3. **算法库**(Algorithms):包含了各种通用的算法,如...

    boost_1_49_0

    - **智能指针**(Smart Pointers):如`shared_ptr`, `unique_ptr`等,提供了比原始指针更安全、更方便的内存管理方式。 - **算法库**:提供了一组高级的算法,如并行算法、迭代器算法等。 - **多线程库**(Thread)...

    Boost程序库完全开发指南

    - **智能指针**:如`boost::shared_ptr`和`boost::unique_ptr`,提供自动内存管理,防止内存泄漏。 - **函数对象和绑定器**:如`boost::function`和`boost::bind`,使得函数和方法可以像对象一样处理。 - **并发...

    boost_1_41_0_doc.rar_boost 中文文档

    2. **智能指针**:如`shared_ptr`和`unique_ptr`,它们提供了更安全、更易管理的对象所有权。 3. **容器库**:比如`multi_array`,提供多维数组的实现,增强了数组的操作性。 4. **函数对象**:如`bind`和`function`...

    boost_1_41_文档_中文版

    1. **智能指针**(Smart Pointers):如`shared_ptr`、`unique_ptr`和`weak_ptr`,这些智能指针类提供了自动内存管理,防止了常见的内存泄漏问题。 2. **函数对象**(Function Objects):如`bind`和`lambda`库,...

    boost_1_37_0 中文学习文档

    1. **智能指针**:如`shared_ptr`和`unique_ptr`,它们提供了一种安全的方式来管理动态分配的对象,避免内存泄漏。这些智能指针自动处理对象的生命周期,当最后一个引用解除时,对象会被自动删除。 2. **算法库**:...

    C++ Boost 库中文文档

    2. **标准库前驱**:许多Boost库已被采纳进入C++标准库,如`shared_ptr`、`unique_ptr`、`variant`和`tuple`等。 3. **跨平台**:Boost库在多种操作系统和编译器上都能良好运行,包括Windows、Linux、Mac OS X等。 4...

    highscore_boost,boost学习

    Boost C++库提供了多种类型的智能指针,例如`shared_ptr`、`unique_ptr`和`weak_ptr`等。其中: - **`shared_ptr`**:支持共享所有权模型,即多个`shared_ptr`可以指向同一个对象。当最后一个指向该对象的`shared_...

    Boost Getting Started on Windows - 1.66_2of5_GettingStarted_

    4. **示例程序**: 为了帮助初学者更好地理解,教程可能会提供一些简单的示例,展示如何使用Boost库的某个或某些组件,如智能指针(boost::shared_ptr, boost::unique_ptr)、线程库(boost::thread)、日期时间库...

    boost.docx

    - **定义**: `boost::shared_ptr` 是一种共享所有权的智能指针,允许多个`shared_ptr`实例共享对同一对象的所有权。 - **计数引用**: 当最后一个`shared_ptr`不再指向该对象时,该对象会被自动删除,避免了内存泄漏...

    Boost库.rar

    1. **智能指针**:如`shared_ptr`、`unique_ptr`和`weak_ptr`,它们提供了更安全的内存管理方式,避免了传统指针可能导致的悬挂指针和内存泄漏问题。 2. **函数对象和绑定**:`bind`和`function`库允许函数和成员...

    Boost库学习指南 Boost库学习指南

    - **`boost::shared_ptr`**:一种智能指针类型,用于自动管理动态分配的对象的生命周期。 - **`boost::filesystem`**:提供了一组易于使用的文件系统操作接口。 - **`boost::regex`**:用于正则表达式的强大库,支持...

    The Boost C++ Libraries_boost库_birthcng_Boostc++_Boost_

    Boost库的成员经常被接纳为C++标准库的一部分,例如智能指针(shared_ptr, unique_ptr)、正则表达式库、函数对象绑定器(bind)和异常安全编程工具等。 Boost库中的birthcng部分可能指的是“Bounded Integer ...

Global site tag (gtag.js) - Google Analytics