`
yuanlanxiaup
  • 浏览: 858574 次
文章分类
社区版块
存档分类
最新评论

c++设计中的几种机制

 
阅读更多

1、PIMPL

私有化实现。解决头文件依赖,文件修改后整个系统需要重新编译的问题。他实现的是一个简单的桥接模式。在类中指针初始化的空间是固定的,不需要知道其具体的类型,所有采用前置声明的方式,可以不需要在头文件中引用他的头文件。这样即隐藏了引用类的实现细节,又减少了编译时文件修改后的编译关联性。

2、NVI

提供一个公有的非虚接口函数,将虚函数私有化。实现行为和接口的分离。因为虚函数的多态性,公有非虚函数自然会去调用相应的虚函数实现。通过对虚函数的包装达到对接口与实现分离的效果。

3、RAII

保证析构函数总是正确被执行。借助函数栈原理,在申明周期结束的时候自动销毁,执行析构。在类的构造函数中申请资源,在析构函数中释放资源。也就是说局部资源对象实例应该尽量分配在栈上而不是堆上,或者使用智能指针。智能指针使用时本身初始化在栈上,保证了在生命周期区域结束时正确的释放资源。


分享到:
评论

相关推荐

    Accelerated C++ PDF 中英文版

    书中还加入了下述几种学习辅助手段:重要术语用黑体表示,我们认为读者已经熟悉的重要术语则用楷体表示。这些术语都会出现在章后的“术语”部分。书中用特殊版式突出标注的文字,是为了向读者提醒语言的重要特征,...

    C++《超市商品管理系统》课程设计报告.doc

    《面向对象程序设计—C++语言描 " "考 "述》.机械工业出版社.2009年 " "资 "[2]钱能.《C++语言程序设计教程》.清华大学出版社.2005年 " "料 " " "其 " " "它 " " "说 "1.本表应在每次实施前一周由负责教师填写二份...

    新手学习C++入门资料

    C++中的try/catch/throw异常处理机制取代了标准C中的setjmp()和longjmp()函数。 二、关键字和变量 C++相对与C增加了一些关键字,如下: typename bool dynamic_cast mutable namespace static_cast using ...

    Accelerated C++源代码

    书中还加入了下述几种学习辅助手段:重要术语用黑体表示,我们认为读者已经熟悉的重要术语则用楷体表示。这些术语都会出现在章后的“术语”部分。书中用特殊版式突出标注的文字,是为了向读者提醒语言的重要特征,...

    C++中的RAII机制详解

    在写C++设计模式——单例模式的时候,在写到实例销毁时,设计的GC类是很巧妙的,而这一巧妙的设计就是根据当对象的生命周期结束时会自动调用其析构函数的,而这一巧妙的设计也是有专业的名词的——RAII。那以下将...

    Absolute C++中文版(原书第2版)-完美的C++教程,文档中还包含英文版

    19.1.5 其他几种迭代器 565 19.2 容器 566 19.2.1 连续容器 566 19.2.2 容器适配器栈和队列 570 19.2.3 关联容器集合和映射 572 19.2.4 效率 575 19.3 泛型算法 576 19.3.1 运行时间和大O记法 576 19.3.2 ...

    Visual C++2010开发权威指南(共三部分).part1.rar

    5.23.1 使用MFC方法定制控件必备的几个基本概念 259 5.23.2 定制自定义控件的3种常见方法 260 5.24 Visual C++ 2010 SysLink控件简介与开发 260 5.25 Visual C++ 2010 Split Button控件简介与开发 261 5.26 Visual ...

    基于C++的沙氏大气激光雷达系统控制软件设计与实现

    沙氏大气激光雷达是近几年快速发展的一种大气环境监测技术。沙氏大气激光雷达 技术以高功率、连续波二极管激光器作光源,使用图像传感器作为探测器,具有设备成 本低、体积小等特点,解决了脉冲式激光雷达系统光源所...

    C++MFC教程

    更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种句柄的困扰,只需要面对C++中的对象,这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助) 正因为MFC是建立在C++的...

    程序设计教程 陈家骏等编著

    11.2 C++异常处理机制 331 11.2.1 try、throw以及catch语句 331 11.2.2 异常处理的嵌套 334 11.3 小结 335 11.4 习题 336 第12章 实例--面向对象的Windows应用程序框架 337 12.1 Windows应用程序的基本结构 337 ...

    界面开发(c++ 、.net)

    SkinSE只用到了windows几个底层的核心库,没有用到(MFC/ATL等第三方库),采用纯API编写,采用C语言导出方式,增强可移植性,可以用于多种计算机语言。 1.SKINSE界面库内部没有完全采用HOOK拦截窗口的机制,主要采用...

    C++ Template 基础篇(一):函数模板详解

    泛型编程弥补了这个缺点,通过把通用逻辑设计为模板,摆脱了类型的限制,提供了继承机制以外的另一种抽象机制,极大地提升了代码的可重用性。 注意:模板定义本身不参与编译,而是编译器根据模板的用户使用模板时...

    Visual C++2010开发权威指南.part02

    3.2 菜单消息的传输机制 129 3.2.1 菜单消息的分类 129 3.2.2 菜单消息的传输路由 129 3.3 动态菜单操作 131 3.3.1 添加菜单 131 3.3.2 插入菜单 133 3.3.3 删除菜单 135 3.3.4 插入菜单的命令响应 136 3.3.5 修改...

    C++版俄罗斯方块游戏设计(课程报告+源码)

    该项目是实现基于C++的俄罗斯方块的小游戏,利用EasyX库,其主要完成以下几个重要的功能:界面显示,方块下落,旋转,方块嵌入,左右移动,消行,分数显示与存储,下个方块的预览等。主要功能简介,游戏界面:该功能...

    VC++可视化编程指南

     3.5几种窗口类型  3.6 使用菜单  3.7 更新命令用户接口(UI)消息  3.8 快捷菜单 第四课 工具条和状态栏  4.1 工具条的可视化设计  4.2 工具条的编程技术  4.3 状态栏的设计与实现 第五课 对话框  ...

    人工免疫算法在机械设计中的应用

    通过对目前几种常用仿生优化算法的研究与分析,在基本免疫算法的框架下用C++实现人工免疫算法;通过测试函数研究提高算法性能的关键因素。将疫苗接种、基因重组、动态分库操作、多重变异概率调节机制加入到算法中,并...

    二十三种设计模式【PDF版】

    有几种画法?艺术大家通常是创造出自己的套路,比如明末清初,水墨画法开始成熟,这时画树就不用勾勒这个模式了,而是一笔 下去,浓淡几个叶子,待毛笔的水墨要干枯时,画一下树干,这样,一个活生写意的树就画出来. 我上面...

    公司库存管理系统课程设计报告.doc

    (4)在系统的设计中,至少要用到面向对象的一种机制。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 4、写出设计说明书 (三、)设计方法和基本原理: 1、问题描述(功能要求...

    c++ 面试题 总结

    6.下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么? int n; if (n == 10) // 第一种判断方式 if (10 == n) // 第二种判断方式 如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少...

Global site tag (gtag.js) - Google Analytics