文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C++类库设计的基本构思和方法

2023-06-17 17:55

关注

本篇内容主要讲解“C++类库设计的基本构思和方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++类库设计的基本构思和方法”吧!

通常进行C++类库设计时,大多数就是在头文件(.h)中声明和定义类,将其成员函数全部定义为内联函数,而不使用源程序文件,希望大家能够得到自己想要的信息。

我们在开篇就对简单性目标作了叙述,这里再稍微展开讨论一下。我们提出的简单标准,首先是外部接口简单,其次是内部结构简单。我们知道,类库是提供给上层应用程序使用的,也就是按照一定的接口规范,向上层提供一定的功能服务。

接口设计得越简单,对上层用户来说就越方便,就越不容易产生Bug。我们可以注意到,流行的成功类库都是拥有简单接口的。为了使接口简单,常常不得不把有关具体实现的复杂性封装于类库内部,也就是说,关于简单性的设计原则,外部接口简单优先于内部实现简单。

高性能是C++语言优于其它OO语言的一个特性。C++的高性能应该首先归于它运行模式,和大多数OO语言不同,C++程序编译后直接产生本地平台代码(Native Code),理论上具备了可能的***执行性能。另外的一个原因是主流的C++编译器都被设计得非常精巧,具有优越的代码优化能力。

对于C++类库设计者来说,保持C++的高性能是一个重要目标。程序的高性能可以从两方面来评价,一是时间性能,以尽量短的时间来解决尽量多的业务;二是资源性能,以尽量少的资源消耗,包括CPU使用、内存占用、网络流量、磁盘空间等等,来维持正常的程序功能。提高性能的主要手段是数据结构、算法和程序体现结构的优化设计000-861 117-102 。

再说可移植性。C++的编译后输出代码是本地平台代码,因此C++本身不具有目标代码可移植性,C++的可移植性只能是源代码可移植性。源代码的可移植性是指,同一软件产品的全部或者部分源代码可以在不同的编译环境中进行编译(不需要编译的除外)。

并且其结果具有相同的品质特性(依优先顺序包括功能性、可靠性、可用性、性能性、可维护性等)。编译环境可以大致分为三个层次,***层的是操作系统,也就是平台(Platform),其次是对源代码直接进行处理的编译器,然后是其它在编译过程中必需的中间件物品。

如库文件等。我们知道C++虽然在语言规范上获得了统一(ISO/IEC),其编译器却是群雄割据的局面,具有代表性的有Borland C++系列(已经淡出市场),Microsoft的Visual Studio系列的C++类库和GNU阵营的***产品gc中的g++。

源代码经编译环境处理后产生的可执行代码的执行平台称为目标平台,不同的编译器的目标平台也不同,有的支持多平台,如g++,有的是单一平台,如Visual C++。对于类库设计者来说。

想要获得完全的可移植性是非常困难的(除非是象STL这样被纳入语言规范的类库,因为不支持STL就是不支持标准的C++。即便如此不同的编译环境还是存在不同的STL实现版本,造成“一个类库多个实现”的局面),我们只能有选择地支持一部分环境。我们在开篇就已经说明,我们选择g++和Visual C++编译器,选择Linux和Windows 32位目标平台。

一个解决办法是将库文件保持在源代码形态(包括头文件和源文件),而不编译成二进制文件。比如STL的许多实现版本都是以头文件形式存在。这样虽然解决了名称装饰所带来的不可移植问题,但同时又会带来代码编译时间增长,源代码完全公开等问题。在C++的名称装饰规则未被统一之前,看起来这个问题是很难两全其美地解决了。

在本系列中,我们也仿照g++的STL实现方式,完全以头文件形式来编写类库。为什么不把代码放到源文件中去呢?主要原因是,头文件只需要用户使用包含指令(#include)就可以处理了,而源文件则需要配置到用户工程的编译目标列表中,和用户的源程序形成共同编译的形式,破坏了用户工程的编译目标的封闭性,比较麻烦而且不符合软件开发的一般习惯。

到此,相信大家对“C++类库设计的基本构思和方法”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯