C++ Primer Plus第一章笔记

书籍信息:《C++ Primer Plus》第6版 Stephen Prata著 张海龙 袁国忠 译

本科阶段开设了C语言基础编程,对于即将进行计算机专业的研究生学习和研究,我发现C++是一道不得不迈过去的槛,而且相比C的刻板,c++更加灵活,所以选择了《C++ Primer Plus》这本入门级的书自学C++。

C语言的诞生

20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发Unix操作系统。操作系统是能够管理计算机资源、处理计算机与用户之间交互的一组程序。为完成这一工作,Ritchie需要一种语言:能够简洁、快速的程序并且能有效地控制硬件。

传统上,程序员使用汇编语言满足这些需求,然而汇编语言是一种低级(low-level)语言,可移植性差。

Unix是为不同计算机上工作而设计的。这意味着它是一种高级语言。高级语言(high-level)致力于解决问题,而不针对特定的硬件。于是,一种被称为编译器的特殊程序将高级语言翻译成特定计算机的内部语言。这样,就可以通过每个平台使用不同的编译器来在不同的平台上使用同一个高级语言。于是,Ritchie将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性结合在一起,开发了C语言。

C语言编程原则

  • 过程性(procedural)编程思想

    计算机语言要处理两个概念:数据和算法。作为过程性语言,C语言强调的是编程的算法方面。为使编程更加有序,结构化编程(structured programming)概念被引入C语言。结构化编程将分支限制为一组行为良好的结构,如for循环、while循环、do-while循环和if-else语句。

  • 自顶向下(top-down)设计

    在C语言中,其理念是将大型程序分解成小型、便于管理的任务,它鼓励程序员开发程序单元(函数)来表示各个任务模块。

C++面向对象编程

与C语言一样,C++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代开发出了这种语言。

面向对象编程 (OOP)

与强调算法的过程性语言不同,OOP强调的是数据。其理念是设计与问题的本质特性相对应的数据格式。

在C++中,类似一种规范,它描述了这种新型数据类型数据格式,对象是根据这种规范构造的特定数据结构。通常,类规定了可使用哪些数据来表示对象以及可以对这些数据进行哪些操作。

OOP程序设计方法首先设计类,它们准确地表示了程序要处理的东西。然后程序员便可以设计一个使用这些类的对象的程序。从低级组织(如类)到高级组织(如程序)的处理过程叫做自下而上(bottom-up)的编程。

OOP编程并不仅仅是将数据和方法合并为类定义:

  • OOP有助于创建可重用的代码
  • 信息隐藏可以保护数据,使其免遭不适当的访问。
  • 多态能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个类。
  • 继承能够使用旧类派生出新类。

C++和泛型编程

泛型(generic)指的是创建独立于类型的代码。

泛型编程(generic programming)是C++支持的另一种编程模式,它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单。不过OOP强调的还是编程的数据方面,而泛型编程强调的还是独立于特定数据类型。OOP是一个管理大型项目的工具,而泛型编程提供了执行常见任务(如对数据排序或合并链表)的工具。泛型编程需要对语言进行扩展,以便可以只编写一个泛型函数,并将其用于各种实际类型。

C++模板提供了完成这种任务的机制

C++程序创建

  1. 使用文本编辑器编写程序,并保存到文件,这个文件就是程序的源代码
  2. 编译源代码。这个过程将源代码翻译为主机使用的内部语言–机器语言。翻译之后的程序文件就是程序的目标代码(object code)
  3. 将目标代码与其他代码链接起来。链接值得是将目标代码同使用的函数的目标代码以及一些标准的启动代码(starup code)组合起来,生成可自行代码