#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库中的智能指针(如boost::shared_ptr和boost::unique_ptr)在C++11标准中被采纳,成为std::shared_ptr和std::unique_ptr。这些智能指针管理对象生命周期,避免内存泄漏,提高了代码的安全性。在boost_1_...
`shared_ptr`是C++11标准之前 Boost 提供的一种智能指针,它采用了引用计数的方式来管理对象的生命周期。当一个`shared_ptr`被创建时,它会增加目标对象的引用计数;当`shared_ptr`被销毁或者赋值给其他`shared_ptr`...
例如,`boost::shared_ptr`是一种智能指针,可以自动管理对象的生命周期,防止内存泄漏。`boost::thread`库提供了线程管理功能,允许编写多线程程序。`boost::asio`库是进行异步I/O操作的强大工具,适用于网络编程。...
1. **智能指针**:Boost库引入了智能指针(如shared_ptr, unique_ptr, weak_ptr),它们是C++原生指针的替代品,能够自动管理对象的生命周期,防止内存泄漏,增强了代码的安全性。 2. **函数对象和绑定器**:Boost....
接下来,Boost库中的智能指针,如`boost::shared_ptr`和`boost::unique_ptr`,在C++11之前是广泛使用的。它们的功能与C++11标准库中的对应智能指针类似,但在某些方面具有更丰富的特性和可定制性。例如,`boost::...
例如,`shared_ptr`、`unique_ptr`和`weak_ptr`等。 2. **多线程支持**(Thread):提供了跨平台的多线程编程接口,包括线程管理、互斥量、条件变量等。 3. **算法库**(Algorithms):包含了各种通用的算法,如...
- **智能指针**(Smart Pointers):如`shared_ptr`, `unique_ptr`等,提供了比原始指针更安全、更方便的内存管理方式。 - **算法库**:提供了一组高级的算法,如并行算法、迭代器算法等。 - **多线程库**(Thread)...
- **智能指针**:如`boost::shared_ptr`和`boost::unique_ptr`,提供自动内存管理,防止内存泄漏。 - **函数对象和绑定器**:如`boost::function`和`boost::bind`,使得函数和方法可以像对象一样处理。 - **并发...
2. **智能指针**:如`shared_ptr`和`unique_ptr`,它们提供了更安全、更易管理的对象所有权。 3. **容器库**:比如`multi_array`,提供多维数组的实现,增强了数组的操作性。 4. **函数对象**:如`bind`和`function`...
1. **智能指针**(Smart Pointers):如`shared_ptr`、`unique_ptr`和`weak_ptr`,这些智能指针类提供了自动内存管理,防止了常见的内存泄漏问题。 2. **函数对象**(Function Objects):如`bind`和`lambda`库,...
1. **智能指针**:如`shared_ptr`和`unique_ptr`,它们提供了一种安全的方式来管理动态分配的对象,避免内存泄漏。这些智能指针自动处理对象的生命周期,当最后一个引用解除时,对象会被自动删除。 2. **算法库**:...
2. **标准库前驱**:许多Boost库已被采纳进入C++标准库,如`shared_ptr`、`unique_ptr`、`variant`和`tuple`等。 3. **跨平台**:Boost库在多种操作系统和编译器上都能良好运行,包括Windows、Linux、Mac OS X等。 4...
Boost C++库提供了多种类型的智能指针,例如`shared_ptr`、`unique_ptr`和`weak_ptr`等。其中: - **`shared_ptr`**:支持共享所有权模型,即多个`shared_ptr`可以指向同一个对象。当最后一个指向该对象的`shared_...
4. **示例程序**: 为了帮助初学者更好地理解,教程可能会提供一些简单的示例,展示如何使用Boost库的某个或某些组件,如智能指针(boost::shared_ptr, boost::unique_ptr)、线程库(boost::thread)、日期时间库...
- **定义**: `boost::shared_ptr` 是一种共享所有权的智能指针,允许多个`shared_ptr`实例共享对同一对象的所有权。 - **计数引用**: 当最后一个`shared_ptr`不再指向该对象时,该对象会被自动删除,避免了内存泄漏...
1. **智能指针**:如`shared_ptr`、`unique_ptr`和`weak_ptr`,它们提供了更安全的内存管理方式,避免了传统指针可能导致的悬挂指针和内存泄漏问题。 2. **函数对象和绑定**:`bind`和`function`库允许函数和成员...
- **`boost::shared_ptr`**:一种智能指针类型,用于自动管理动态分配的对象的生命周期。 - **`boost::filesystem`**:提供了一组易于使用的文件系统操作接口。 - **`boost::regex`**:用于正则表达式的强大库,支持...
Boost库的成员经常被接纳为C++标准库的一部分,例如智能指针(shared_ptr, unique_ptr)、正则表达式库、函数对象绑定器(bind)和异常安全编程工具等。 Boost库中的birthcng部分可能指的是“Bounded Integer ...