boost学习之--shared_ptr

简介:

 在boost中,有一个智能指针类shared_ptr可以管理好我们的指针。这里我不详解,以下列出使用例子。自己现写现调通过的哈:


#include <iostream>
#include <boost/shared_ptr.hpp>
#include <boost/make_shared.hpp>
 
using namespace std;
using namespace boost;
 
class Person
{
public:
    Person(string name, int age) : m_name(name), m_age(age) { cout << "construct" << endl; }
    ~Person() { cout << "destruct" << endl; }
 
    void print(void) { cout << "name:" << m_name << ", age:" << m_age << endl; }
private:
    string m_name;
    int m_age;
};
 
int main( int argc, char *argv[] )
{
    cout << "Hello, This is a test of shared_prt" << endl;
    if (1) {
        shared_ptr<Person> pMan = make_shared<Person>("Peter Lee", 24);
        pMan->print();
    }
    cout << "End test" << endl;
    return 0;
}

    编译运行结果:

    其实上面展示的功能scoped_ptr也有。但scoped_ptr是不可复制的,而shared_ptr的特点是任意复制的。shared_ptr内部有一个引用计数器,记录当前这个指针被几个shared_ptr共享。 


目录
相关文章
|
3月前
|
C++
C++智能指针shared_ptr
C++智能指针shared_ptr
25 0
|
4月前
|
安全 编译器 C++
[C++] 智能指针(shared_ptr、unique_ptr)
[C++] 智能指针(shared_ptr、unique_ptr)
27 1
|
4月前
C++11 shared_ptr智能指针
C++11 shared_ptr智能指针
32 0
|
10月前
|
编译器 C++
shared_ptr 和 unique_ptr 深入探秘
shared_ptr 和 unique_ptr 深入探秘
95 0
|
10月前
|
程序员 C++
C++11之智能指针(unique_ptr、shared_ptr、weak_ptr、auto_ptr)浅谈内存管理
C++11之智能指针(unique_ptr、shared_ptr、weak_ptr、auto_ptr)浅谈内存管理
85 0
|
12月前
|
安全 Linux 开发工具
C++11 智能指针之shared_ptr<void>
基于Alexa的全链路智能语音SDK基于C++实现了跨平台特性,跑通了Android、Mac、Linux等设备,在兼容iOS时发现iOS未提供音频采集和播放的C++接口,所以需要改造SDK,允许SDK初始化时注入外部的采集器和播放器实现类,同时SDK中的Android播放器是基于ffmpeg解码 + opensl实现,但是考虑到包体积的问题,准备也基于这个接口在外部实现基于Android硬件解码的播放器。
279 0
关于 error: C2039: “shared_ptr”: 不是“std”的成员 的解决方法
关于 error: C2039: “shared_ptr”: 不是“std”的成员 的解决方法
关于 error: C2039: “shared_ptr”: 不是“std”的成员 的解决方法
|
安全 前端开发 网络安全
【Example】C++ 标准库智能指针 unique_ptr 与 shared_ptr
在现代 C + + 编程中,标准库包含智能指针,智能指针可处理对其拥有的内存的分配和删除,这些指针用于帮助确保程序不会出现内存和资源泄漏,并具有异常安全。C 样式编程的一个主要 bug 类型是内存泄漏。 泄漏通常是由于为分配的内存的调用失败引起的 delete new。 现代 C++ 强调“资源获取即初始化”(RAII) 原则。 其理念很简单。 资源(堆内存、文件句柄、套接字等)应由对象“拥有”。 该对象在其构造函数中创建或接收新分配的资源,并在其析构函数中将此资源删除。 RAII 原则可确保当所属对象超出范围时,所有资源都能正确返回到操作系统。 --Microsoft Docs
187 0
|
安全 C++
boost1.53中的lock-free
boost1.53中的lock-free
432 0
shared_ptr 的使用及注意事项
1. 声明#include class UsersBitmap { ... } typedef boost::shared_ptr UsersBitmapPtr; 2. 使用 UsersBitmapPtr login_users_;UsersBitmapPtr temp_login_users(new UsersBitmap());    //指向对象 login_users_.
1167 0

热门文章

最新文章