小和尚上山学习之智能指针
QtC++ 开发从业者
天道酬勤
展开
-
小和尚上山学艺-设计模式-简单工厂实战课
简单工厂模式 主要用于创建对象。新添加类时,不会影响以前的系统代码。核心思想是用一个工厂来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。GOOD:适用于不同情况创建不同的类时BUG:客户端必须要知道基类和工厂类,耦合性差class COperation{public: int m_nFirst; int m_nSecond; virtual double GetR...原创 2020-05-27 17:05:50 · 158 阅读 · 0 评论 -
小和尚上山学艺-设计模式-装饰模式
装饰模式动态地给一个对象添加一些额外的职责(不重要的功能,只是偶然一次要执行),就增加功能来说,装饰模式比生成子类更为灵活。建造过程不稳定,按正确的顺序串联起来进行控制。GOOD:当你向旧的类中添加新代码时,一般是为了添加核心职责或主要行为。而当需要加入的仅仅是一些特定情况下才会执行的特定的功能时(简单点就是不是核心应用的功能),就会增加类的复杂度。装饰模式就是把要添加的附加功能分别放在单独的类中...原创 2020-05-27 17:05:23 · 168 阅读 · 0 评论 -
小和尚上山学习之智能指针(二)--boost::scoped_ptr
boost::scoped_ptr:属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。boost::scoped_ptr 跟 std::auto_ptr 一样,可以方便的管理单个堆内存对象,特别的是,boost::scoped_ptr 独享所有权,避免了 std::auto_ptr 恼人...原创 2018-06-29 10:45:43 · 191 阅读 · 0 评论 -
小和尚上山学习之智能指针(四)--boost::scoped_array
boost::scoped_array 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。 boost::scoped_array 便是用于管理动态数组的。跟 boost::scoped_ptr 一样,也是独享所有权的。我们还是从代码开始分析:class Simple { public:...原创 2018-06-29 11:04:50 · 311 阅读 · 0 评论 -
小和尚上山学习之智能指针(三)--boost::shared_ptr
boost::shared_ptr 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。在上面我们看到 boost::scoped_ptr 独享所有权,不允许赋值、拷贝,boost::shared_ptr 是专门用于共享所有权的,由于要共享所有权,其在内部使用了引用计数。boost::sh...原创 2018-06-29 10:56:44 · 254 阅读 · 0 评论 -
小和尚上山学习之智能指针(五)--boost::shared_array
boost::shared_array 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。 由boost::scoped_array独享所有权,显然在很多情况下(参数传递、对象赋值等)不满足需求,由此我们引入 boost::shared_array。跟 boost::shared_ptr...原创 2018-06-29 11:11:10 · 1590 阅读 · 0 评论 -
小和尚上山学习之智能指针(六)--boost::weak_ptr
boost::weak_ptr 属于 boost 库,定义在 namespace boost 中,包含头文件 #include<boost/smart_ptr.hpp> 便可以使用。在讲 boost::weak_ptr 之前,让我们先回顾一下前面讲解的内容。似乎 boost::scoped_ptr、boost::shared_ptr 这两个智能指针就可以解决所有单个对象内存的管理了,这...原创 2018-06-29 11:25:56 · 252 阅读 · 0 评论 -
小和尚上山学习之智能指针(一)--auto_ptr
// smart_point.cpp : 定义控制台应用程序的入口点。//由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、b...原创 2018-06-29 10:28:53 · 223 阅读 · 0 评论