大家都知道指针的优越性及缺点,为了解决指针的缺点,我们采用了智能指针。这篇文章我已经用通俗易懂的方式讲解了智能指针,希望看完的小伙伴们能够从中获得启发,有所收获!
分类:
其他好文 时间:
2018-01-15 00:28:18
阅读次数:
203
#include <string>#include <iostream>#include <boost/shared_ptr.hpp>class implementation{public: ~implementation() { std::cout <<"destroying implementa ...
分类:
其他好文 时间:
2018-01-09 13:00:14
阅读次数:
154
6.10 智能指针C++11 提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理 unique_ptr:不允许多个指针共享资源,可以用标准库中的move函数转移指针shared_ptr:多个指针共享资源weak_ptr:可复制shared_ptr,但其构造或者释放对资源不产 ...
分类:
编程语言 时间:
2017-12-13 23:24:14
阅读次数:
179
智能指针的使用 智能指针是在 <memory> 标头文件中的 std 命名空间中定义的。 它们对 RAII 或“获取资源即初始化”编程惯用法至关重要。 此习惯用法的主要目的是确保资源获取与对象初始化同时发生,从而能够创建该对象的所有资源并在某行代码中准备就绪。 实际上,RAII 的主要原则是为将任何 ...
分类:
编程语言 时间:
2017-12-07 15:06:24
阅读次数:
210
1.shared_ptr:允许多个指针指向同一个对象 初始化方式: shared_ptr p1 = make_shared(10);//最好使用这种方式 shared_ptr p2(new int(20)); //只能用直接初始化方式 和普通指针有一样的操作,*,->,swap等 支持拷贝与赋值与自... ...
分类:
其他好文 时间:
2017-12-02 23:26:30
阅读次数:
201
前言 在C++中,动态内存的管理是通过运算符new和delete来完成的。但使用动态内存很容易出现问题,因为确保在正确的时间释放内存是及其困难的。有时候我们会忘记内存的的释放,这种情况下就会产生内存泄露;有时候又会在尚有指针引用的情况下就用delete释放了内存,这样又会产生引用非法内存的指针(野指 ...
分类:
编程语言 时间:
2017-11-27 18:50:35
阅读次数:
241
一、关键 每个shared_ptr所指向的对象都有一个引用计数,它记录了有多少个shared_ptr指向自己 shared_ptr的析构函数:递减它所指向的对象的引用计数,如果引用计数变为0,就会销毁对象并释放相应的内存 引用计数的变化:决定权在shared_ptr,而与对象本身无关 二、引用计数初 ...
分类:
其他好文 时间:
2017-11-17 18:35:23
阅读次数:
204
优势:即使StrBlob类对象被销毁,vector并不一定会被销毁! 适用:多个类对象间共享数据 ...
分类:
其他好文 时间:
2017-11-17 18:32:50
阅读次数:
151
本周貌似主题有点儿杂乱,我归纳了一下,主要有以下几个方面: 1. 运算符重载 主要包括了: 转换运算符(这个个人感觉很多坑,还不如直接搞个成员函数转换) 类似指针的类(其实就是重载了部分的指针运算符,如*,->,++, 等,其实就是智能指针呗) 函数对象(重载了operator()),主要好处是方便 ...
分类:
编程语言 时间:
2017-11-13 00:20:24
阅读次数:
218
今天看了一下智能指针的东西,发现更简单的思路: 就是Block和solver构造时,需要传递unique_ptr,那我们将普通指针转换成unique_ptr不就可以了么: // 初始化g2o //第一步: typedef g2o::BlockSolver< g2o::BlockSolverTrait ...
分类:
其他好文 时间:
2017-11-10 18:46:33
阅读次数:
234