C++ Primer Plus Notes
预备知识
- C++是一种令人兴奋的语言,它在C语言的基础上添加了对面向对象编程和泛型编程的支持。C++继承了C语言高效、简洁、夸苏和可移植性的传统。C++面向对象的特性带来了全新的编程方法,这种方法是为应付复杂长度不断提高的现代编程的任务而设计的。C++的模板特性提供了另一种全新的编程方法——泛型编程。
C++简介
- C++融合了3钟不同的编程方式:C语言代表的过程性语言、C++在C语言基础上添加的类代表的面向对象语言、C++模块支持的泛型编程。
C++简史
- C和Pascal这样的语言引领人们进入了结构化编程时代,这种机制把秩序和规程带进了迫切需要这种性质的领域中。除了提供结构化编程根据外,C还能生成简介、快速运行的程序,并提供了处理硬件问题的能力。因为这些因素使C语言成为20世纪80年代占统治地位的编程语言。
C语言
- 高级语言(high-level)语言致力于解决问题,而不针对特定的硬件。一种被称编译器的特殊程序将高级语言翻译成特定计算机的内部语言。这样,就可以通过对每个平台使用不同的编译器来在不同的平台上使用同一个高级语言程序了。Ritchie希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在旧语言的基础上开发了C语言
C语言编程原理
- 一般来说,计算机语言要处理两个二概念——数据和算法。数据使程序使用和处理的信息,而算法是程序使用的方法。C语言与当前最主流的语言一样,在最初面试时也是过程性语言,这意味着它强调的是编程的算法方面。
- C语言具有使用结构化编程的特性。结构化编程将分支限制为一小组行为良好的结构。
- 另一个新原则是自顶向下(top-down)的设计。在C语言中,其理念是将大型程序分解成小型、便于管理的任务,它鼓励程序员开发程序单元(函数)来表示各个任务模块。
- 如上所述,结构化编程技术反映了过程性编程的思想,根据执行的操作来构思一个程序。
面向对象编程(OOP)
- OOP强调的是数据。OOP不像过程性编程那样,试图使问题满足语言的过程性方法,而是时突然语言来满足问题的要求。其理念使设计与问题的本质特性相对应的数据格式。
- 类使一种规范,它描述了这种新型数据格式,对象使根据这种规范构架的特定结构。OOP程序设计方法首先设计类,它们准确地表示了而持续要处理的东西。类定义描述了对每个类可执行的操作,你便可以设计一个使用这些类的对象的程序。从低级组织(如类)到高级组织(如程序)的处理过程叫做自下向上(bottom-up)的编程。
- OOP编程编程并不仅仅使将数据和方法合并为类定义。还有助于创建可重用的代码,这将减少大量的工作。信息隐藏可以保护数据。使其免遭不适当的访问。多态让您能够为运算符和函数创建多个定义,通过编程上下文来确定使用哪个定义。继承让您能够使用旧类派生出新类。OOP引入了很多新的理念,使用的编程方法不同于过程性编程。它不是将重点放在任务上,而是放在表示概念上。
C++和泛型编程
- 泛型编程(generic programming)是C++支持的另一种编程模式。它与OOP的目标相同,即使重用代码和抽象通用概念的技术更简单。不过OOP强调的是编程的数据方面,而泛型编程提供了执行常见任务的工具。术语泛型(generic)指的是创建独立于类型的代码。C++的数据表示有多种类型。泛型编程需要对语言进行扩展,以便可以只编写一个泛型(即不是特定类型的)函数,并将其用于各种实际类型。
C++的起源
- 与C语言一样,C++也是在贝尔实验室诞生的,Bjarne Stroustrup于20世纪80年代在这里开发出了这种语言。
用他的话来说:“C++主要是为了我的朋友和我不必再使用汇编语言、C语言或其他现代高级语言来编程而设计的。它的主要功能是可以更方便地编写出好程序,让每个程序员更加快乐。”
可移植性和标准
- 在可移植性方面存在两个障碍,其中一个是硬件。硬件特定的程序是不可移植的。第二个障碍是语言上的差异。
- ANSI C标准不仅定义了C语言,还定义了一个ANSI C实现必须支持的标准C库。
程序创建的技巧
1.使用文本编辑器编写程序,并将其保存到文件中,这个文件就是程序的源代码。
2.编译源代码。运行一个程序,将源代码翻译为主机使用的内部语言——机器语言。包含了翻译后的程序的文件就是程序的目标代码。
3.将目标代码与其他代码链接起来。链接指的是将目标代码同使用的函数的目标代码以及一些标准的启动代码(startup code)结合起来,生成程序的运行阶段版本。
创建源代码文件
根据开发平台不同,创建的源代码文件的后缀名也是不同的
C++实现 | 源代码文件的扩展名 |
---|---|
UNIX | C、cc、cxx、 |
GNU C++ | C、cc、cxx、cpp、c++ |
Digital Mars | cpp、cxx |
Borland C++ | cpp |
Watcom | cpp |
Microsoft Visual C++ | cpp、cxx、cc |
Freestyle Code Warrior | cp、cpp、cc、cxx、c++ |
编译和链接
自查
总结
- C语言新增了诸如控制结构和函数等特性,以便更好地控制程序流程,支持结构化和模块化程度更高的方法;而C++增加了对面向对象吧inch和泛型编程的支持,这有助于提高模块化和创建可重用代码从而节省编程时间并提高程序的可靠性。
- C++的流行导致大量用于各种计算平台的C++实现得以面世;而ISOC++标准(C++98/03和C++11)为确保众多实现的相互兼容提供了基础。实现了该语言在不同计算机平台和实现之间的可移植性。
- 要创建C++程序,可创建一个或多个源代码文件,其中包含了以C++语言表示的程序。这些文件是文本文件,它们记过编译和链接后将得到机器语言文件,后者构成了可执行的程序。上述任务通常是在IDE中完成的,IDE提供了用于创建源代码文件的文本编辑器、用于生成可执行文件的编译器和链接器以及其他资源。