About C++

  • C++融合3种不同的编程方式:
    • C++继承了C语言高效,简洁,快速和可移植性的传统
    • C++面向对象的特性带来了全新的编程方式,这种方式是为应付复杂程度不断提高的现代编程任务而设计的
    • C++模板特性提供了另一种全新的编程方法——泛型编程
  • 计算机语言处理两个概念——数据和算法

    • 数据是程序使用和处理的信息
    • 算法是程序使用的方式
  • 过程化编程:

    • 强调的是编程的算法能力
    • 过程化编程首先确定计算机应采取的操作,然后使用编程语言来实现这些过程
  • 结构化编程将分支(决定接下来应执行那个指令)限制为一小组行为良好的结构。

  • 自顶向下的设计:在C语言中,其理念是将大型程序分解成小型,便于管理的任务。

  • 结构化编程技术反映了过程性编程的思想,根据执行的确操作来构思一个程序

  • 面向对象编程:

    • 与强调算法的过程性编程不同的是,它强调的是数据
    • 理念是设计与问题的本质特性相对应的数据格式
    • 类是一种规范,它描述了这种新型数据格式,对象是根据这种规范构造的特定数据结构
    • 类规定了可使用那些数据来表示对象以及可以对这些数据执行那些操作
  • OOP程序设计方法:OOP程序首先设计类,它们准确地表示了程序要处理的东西。然后设计一个使用这些类的对象程序。

  • 低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上的编程

  • OOP编程:

    • 将数据和方法合并为类定义
    • 创建可重用的代码(继承)
    • 信息隐藏可以保护数据,使其免遭不适当的访问(封装)
    • 多态让你能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义(多态)
  • 泛型编程:

    • OPP编程强调的是编程数据方面,而泛型编程强调的是独立于特定数据的类型。
    • OPP是一个管理大型项目的工具,而泛型编程提供了执行常见任务(如对数据排序或合并链表)的工具。
    • 术语泛型指的是创建独立于类型的代码
  • 库是编程模块的集合,可以从程序中调用它们。

  • 计算机程序将实际问题转化为计算机能够执行的一系列操作

  • C++为什么广泛传播:

    • OOP部分赋予了C++语言将问题所涉及的概念联系起来的能力。
    • C部分赋予了C++语言紧密联系硬件的能力
    • C++融合了OOP,泛型编程和传统的过程性方法,这表明C++强调的是使用价值
  • 如果在不修改代码的情况下,重新编译程序后,程序在不同平台下正常运行,那么该程序是可移植的。

  • 可移植性方面存在两个障碍:

    • 硬件:硬件特定的程序是不可移植的
    • 语言上的差异
  • C++程序如何运行起来的?

    image-20240420184544663

    • 使用文本编辑器编写程序,并将其保存到文件中,这个文件就是程序的源代码
    • 编译源代码,这意味着运行一个程序,将源代码翻译为主机使用的内部语言——机器语言。包含翻译后的程序的文件就是程序的目标代码。
    • 将目标代码与其他代码连接起来。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码组合起来,生成程序的运行阶段版本。包含最终产品的文件被称为可执行代码。

总结:

  1. 随着计算机的功能越来越强大,计算机程序越来越庞大而复杂。为应对这种挑战,计算机语言也得到了改进,以便编程过程更为简单。C语言新增了诸如控制结构和函数等特性,以便更好地控制程序流程,支持结构化和模块化程度更高的方法;而C++增加了对面向对象编程和泛型编程的支持,这有助于提高模块化和创建可重用代码,从而节省编程时间并提高程序的可靠性
  2. C++的流行导致大量用于各种计算机平台的C++实现得以面世;而ISOC++标准(C++98/03和C++11)为确保众多实现的相互兼容提供了基础。这些标准规定了语言必须具备的特性,语言吴现出的行为,标准库函数,类和模板,皆在实现语言在不同计算平台和实现之间的可移植性。
  3. 要创建C++程序,可以创建一个或多个源代码文件,其中包含了以C++语言表示的程序。这些文件是文本文件,它们经过编译和链接后将得到机器语言文件,后者构成了可执行的程序。上述任务通常是在IDE中完成的,IDE提供了用于创建源代码文件的文本编辑器,用于生成可执行文件的编译器和连接器以及其他资源,如项目管理和调试功能。然而,这些任务也可以在命令行环境中通过合适的工具来完成。