iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类库设计的基本构思和方法
  • 303
分享到

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

2023-06-17 17:06:23 303人浏览 八月长安
摘要

本篇内容主要讲解“c++类库设计的基本构思和方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++类库设计的基本构思和方法”吧!通常进行C++类库设计时,大多数就是在头文件(.h)中声明和定义

本篇内容主要讲解“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++编译器,选择linuxwindows 32位目标平台。

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

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

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

--结束END--

本文标题: C++类库设计的基本构思和方法

本文链接: https://www.lsjlt.com/news/291301.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++类库设计的基本构思和方法
    本篇内容主要讲解“C++类库设计的基本构思和方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++类库设计的基本构思和方法”吧!通常进行C++类库设计时,大多数就是在头文件(.h)中声明和定义...
    99+
    2023-06-17
  • Kubernetes存储的设计与基本架构方法是什么
    这篇文章主要讲解了“Kubernetes存储的设计与基本架构方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Kubernetes存储的设计与基本架构...
    99+
    2024-04-02
  • Java设计模式的基本概念和分类
    这篇文章主要介绍“Java设计模式的基本概念和分类”,在日常操作中,相信很多人在Java设计模式的基本概念和分类问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java设计模式的基本概念和分类”的疑惑有所帮助!...
    99+
    2023-06-16
  • 浅谈C++流库的基本结构
    目录一、流库的基本结构二、流库常用API流库是C++标准库的一部分,它提供了一组与输入和输出流相关的类和函数,使得数据的读写变得非常方便和灵活。下面我们将介绍C++流库的基本结构及其...
    99+
    2023-05-16
    C++流库 C++流库基本结构
  • 云服务器设计思路和方法
    云服务器(Cloud Distributed Server,简称CDP)是一种基于互联网的服务器解决方案,可以提供高可靠性和高性能的计算环境。在云计算系统中,服务器通常由多台计算机组成,其中一台用于提供计算资源,其他计算机则在服务器之间共享...
    99+
    2023-10-27
    思路 服务器 方法
  • C/C++程序设计的基本概念详解
    目录概述main()函数内部名称变量和它的初始化编译时和运行时总结概述 学C语言有很长一段时间了,想做做笔记,把C和C++相关的比较容易忽视的地方记下来,也希望可以给需要的同学一些帮...
    99+
    2024-04-02
  • java类设计的基本原则是什么
    Java类设计的基本原则包括: 单一职责原则(Single Responsibility Principle,SRP):一个类应...
    99+
    2023-10-27
    java
  • PHP分布式架构的设计思路与实现方法
    随着互联网业务的不断发展和用户量的不断增加,单机架构已经无法满足业务需求,分布式架构成为了目前互联网行业的主流趋势之一。PHP作为一种流行的后端开发语言,也需要在分布式架构中发挥作用。本文将介绍PHP分布式架构的设计思路和实现方法。 一、...
    99+
    2023-09-03
    分布式 npm numy
  • C++ 函数继承详解:如何设计良好的基类和派生类继承层次结构?
    函数继承使派生类从基类继承方法,可实现代码重用和多态性。遵循单一职责、开放-封闭、里斯替换原则设计良好继承层次结构,可避免代码耦合和钻石问题。 C++ 函数继承详解:如何设计良好的基类...
    99+
    2024-05-03
    c++ 继承 lsp
  • 浅谈C++ 设计模式的基本原则
    先上银行类案例代码如下: #include<iostream> using namespace std; class BankWorker { public...
    99+
    2024-04-02
  • Java基础-设计一个Java类所需的方法(转)
    Java基础-设计一个Java类所需的方法(转)[@more@](1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:ThisIsAClass...
    99+
    2023-06-03
  • C#基类的初始化方法
    今天小编给大家分享一下C#基类的初始化方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基类的初始化派生类继承了基类的成员变...
    99+
    2023-06-17
  • C语言类的基本语法详解
    目录1、由C语言的结构体进入到C++中的类2、C++中如何定义类?3、C++中实例化一个对象4、C++类的访问限定及其封装 C++中的访问限定符5、C++中类的作用域6、成员变量和方...
    99+
    2024-04-02
  • 数据库设计的基本原则是什么
    小编给大家分享一下数据库设计的基本原则是什么,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!数据库设计的基本原则:1、把具有同一个主题的数据存储在一个数据表中;2、尽量消除冗余,提高访问数据...
    99+
    2024-04-02
  • SpringCloud整体构架的设计方法
    这篇文章给大家分享的是有关SpringCloud整体构架的设计方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。SpringClound整体核心架构只有一点:Rest服务,也就是...
    99+
    2024-04-02
  • C++ Primer的变量和基本类型详解
    目录1.类型转换含有无符号类型的表达式2.字面值常量整形和浮点型字面值字符和字符串字面值转移序列指定字面值的类型布尔字面值和指针字面值总结1.类型转换 对象的类型定义了对象能包含的数...
    99+
    2024-04-02
  • Go 缓存系统的架构设计:重定向和 Bash 脚本的实现方法
    在计算机科学领域,缓存系统是一种常见的技术,用于提高系统的性能和响应速度。在 Go 语言中,有许多优秀的缓存系统,其中一些基于内存,而另一些则基于磁盘或者网络存储。本文将介绍一种基于内存的缓存系统,它使用重定向和 Bash 脚本来实现。 ...
    99+
    2023-08-28
    缓存 重定向 bash
  • C++ 函数重载和重写与类层次结构的设计原则
    函数重载和重写简介c++++ 中的函数重载和重写允许同名函数具有不同的参数列表或覆盖基类中的同名函数,以实现更灵活和可扩展的代码,并遵循重要原则(如 srp、lsp、dip)。 C++...
    99+
    2024-04-20
    函数重载 类层次结构 c++ lsp
  • redis基本类型和使用方法的示例分析
    这篇文章主要介绍redis基本类型和使用方法的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!redis存储数据的基本类型有:string(字符串类型)、hash(散列类型)、...
    99+
    2024-04-02
  • BufferQueue的设计思想和内部实现方法是什么
    这篇文章主要介绍“BufferQueue的设计思想和内部实现方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“BufferQueue的设计思想和内部实现方法是什么”文章能帮助大家解决问题。 背...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作