C++ 的设计

作者: 霁_雪 | 来源:发表于2018-08-18 12:17 被阅读0次

    C++ 的设计

    1. 简单性是一个重要的设计原则;保持与 C 的高度兼容性
    2. 不需要特殊的运行时支持(除了 new/delete/dynamic_cast/throw/try-catch)
    3. 使用类型系统去检查函数的参数,保护数据不被意外地破坏
    4. 代码设计的重点:可管理,容易扩充,容易测试

    C 的优点

    1. 是通用的、简洁的、相对低级的
    2. 适合用于大部分系统程序设计工作
    3. 可以在每个地方的任何系统上运行
    4. 适用于 UNIX 程序设计环境

    C++ 为什么不抛弃 C

    1. 已存在的 C 代码可能从 C++ 中收益,先决条件是不必将它们完全从 C 重新写成 C++
    2. 已存在的用 C 写出的库函数和功能软件代码可以在 C++ 程序中使用,或者被 C++ 程序使用;先决条件是 C++ 能够与 C 链接兼容,且在语法上与 C 类似
    3. 已存在的很多程序员了解 C 语言,只需要去学习 C++ 新特性的使用,而不需要重新学习基础
    4. C++ 和 C 将在许多年被同一些人用于同样的系统,因此其差异必须是或者是很小,或者是很大,以最大限度地减少错误和混乱的发生

    如何写好 C 语言

    好的 C 程序倾向于也是 C++ 程序

    在 C++ 中比 C 好的实现方式

    1. 在 C++ 几乎不适用宏。
    • 定义明显的常量用 enum 和 const
    • 避免函数调用的额外开销使用 inline
    • 刻画一组函数或者类型用 template
    • 避免名字冲突用 namespace
    1. 不要在需要变量之前去声明,保证能立即对其进行初始化。
    2. 不要用 malloc。
    • 用 new 代替 malloc?
    • 用 vector 代替 realloc?
    1. 试着避免 void*、指针运算、联合和强制,除了在某些函数或类实现的深层之外。
    • 强制是设计错误的指示器
    • 用 “新的强制” 去完成某个显式的类型转换
    1. 尽量少用数组和 C 风格的字符串。
    • 用 vector 代替 数组
    • 用 string 代替 C 风格的字符串

    如何设计 C++ 程序

    1. 分析:清晰地理解问题
    2. 设计:标识出在一个解决方案中设计的关键性概念
    3. 编程:用程序去表达解决方案
    • 当概念不容易表示为基本类型,或者与之关联的数据的函数,就设计类来实现

    如何设计类

    1. 类就是一个类型,刻画了该类的对象的行为:如何建立,如何操作,如何销毁
    2. 将有关概念组织到一个树形结构中
    • 最一般的概念成为树根(基类和派生类)
    • 定义一个概念的最一般版本的操作(虚函数,特定的类进一步精确化这些操作)
    1. 将类组织成有向无环图,处理有相互依赖性的类
    • 将循环依赖关系局部化,使之不影响整体结构
    • 无法局部化,则设想出基本概念之间容易陈述的关系,来方便管理
    • 分离界面和实现(抽象类)
    • 共性的类通过模板表示(类模板)

    如何学习 C++

    1. 了解想说的是什么(分析-设计)
    2. 实践,模仿好的作品(编程)
    3. 学习引进的新特性

    使用 C++ 的忠告

    1. 在编程时,为针对某个问题的解决方案中的思想建立起一种具体表示。让程序的结构尽可能直接地直接反映这些思想:
    • 如果能看成一个独立的概念,就设计成一个类
    • 如果能看成一个独立的实体,就设计成某个类的一个对象
    • 如果两个类有共同的界面,则设计该界面为一个抽象类
    • 如果两个类的实现有显著的共同东西,则设计该共性为一个基类
    • 如果一个类是一种对象的容器,则做成一个模板
    • 如果一个函数实现对某容器的一个算法,将其设计为一组容器可用的模板函数
    • 如果一组类、模板之间有逻辑关系,将它们放进同一命名空间
    1. 在定义一个并不是实现某个像矩阵或者复数这样的数学对象的类时,或者定义一个低层的类型如链表的时候
    • 不要使用全局数据,使用成员
    • 不要使用全局函数
    • 不要使用共用数据成员
    • 不要使用友元,除非为了避免全局数据和共用数据成员
    • 不要在一个类里面放“类型域”(说明一个类所存储数据的情况而放置的标志域),采用虚函数
    • 不要使用 inline 函数,除非作为效果显著的优化

    相关文章

      网友评论

        本文标题:C++ 的设计

        本文链接:https://www.haomeiwen.com/subject/hgxfiftx.html