前言
欢迎来到C++的世界!
C++是在C语言的基础上添加面向对象编程和泛型编程得到的语言
C++
继承了C语言高效、简洁、快速和可移植的特点
C++
面向对象的特性带来了全新的编程方法,能更好应对复杂的编程问题
C++
的模板特性也提供了另一种全新的编程方式——泛型编程
第一章——预备知识
1.1 C++简介
C++
融合了三种不同的语言:
以C语言为代表的过程性语言
在C语言基础上添加的类代表的面向编程语言
C++模板支持的泛型编程
本章为对C++
背景知识的简要介绍
1.2 C++简史
20世纪60年代,笔记本计算机的计算速度和存储信息的能力超过了大型机
20世纪70年代,C和Pascal带领人们进入了结构化编程时代
20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX操作系统,为完成这项工作,Ritchie在旧语言的基础上开发了C语言(果然大佬的世界难以想象)
20世纪80年代,主角C++在贝尔实验室里诞生,Bjarne Stroustrup在这里开发出了这种语言
Bjarne Stroustrup设计并实现了这种语言,可以访问他的个人网站
Bjarne Stroustrup的个人网页
(老头子被问到最多的问题是Bjarne Stroustrup怎么读)
1.3 可移植性和标准
可移植性指的是相同的代码在不同的平台运行时不必修改代码本身。
实现可移植性的两个障碍分别是硬件和语言上的差异,因此需要指定一定的标准。
经过多年的努力,于1998年指定出了标准第一版(C++98)
于2003年指定出了标准第二版(C++2003)
但C++03并没有修改语言特性,因此我们常用C++98表示C++98/C++2003。
C++在不断发展,ISO委员会在2001年8月批准了新标准,被称作C++11.
本书编写期间,对C++11的支持还不全面,故更为详尽的介绍C++98.
1.4 程序创建的技巧
编写完一个C++程序后,如何让他运行起来?具体步骤取决于计算机环境和所使用的C++编译器,但大体如下:
(1)使用文本编辑器编写程序,并保存到文件中,这个文件就是源代码。
(2)编译源代码。把源代码翻译为机器语言,包含了翻译后的程序的文件就是程序的目标代码。(Object Code)
(3)将目标代码与其他代码链接起来。例如C++程序经常使用库,链接指的是将目标代码同使用函数的目标代码以及一些标准的启动代码组合起来,生成程序的运行阶段版本。包含该最终产品的文件被称为可执行代码。
1.4.1 创建源代码文件
有些C++实现提供了集成开发环境(IDE),让您能够在主程序中管理程序开发的所有步骤
有些则只能处理编译和链接阶段(现在常见的IDE如Visual Studio等都挺好用的)
给源文件命名时,必须使用正确的后缀,将文件标识为C++文件,这不仅告诉您这是C++源代码,还将这种信息告知编译器。后缀由一个句点和一个或多个字符组成,这些字符被称为拓展名。
使用什么拓展名取决于C++实现,下表是C++实现的一些常用拓展名
C++实现 | 源代码文件的拓展名 |
---|---|
UNIX | C、cc、cxx、c |
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++ |
1.4.2 编译和链接
最初,Stroustrup实现C++时,使用了一个叫cfront的编译器程序把C++翻译成C。后来随着C++的日益普及,C++编译器被创立起来。
编译的机理取决于实现,下面介绍一下Windows编译器:
Windows产品很多且修订繁复,虽然无法对他们分别进行介绍,但大多数基于Windows的C++编译器都有一些相同的功能。
通常,第一步是为程序创建一个项目,并将组成程序的一个或多个文件添加到该项目中。每个厂商提供的IDE都包含创建项目的菜单选项。必须确定的一点是,需要创建什么类型的程序(若要实现跨平台,建议避免要求平台特定代码的选项)。
创建好项目后,需要对程序进行编译和链接。IDE通常提供了多个菜单项,如Compile(编译)、Build(建立)、Make(生成)、Build All(全部建立)、Link(链接)、Execute(执行)、Run(运行)和Debug(调试)等。
- Compile通常意味着对当前打开的文件中的代码进行编译。
- Build和Make通常意味着编译项目中所有源代码文件。这通常是一个递增过程,也就是说,如果项目包含3个文件,而只有一个文件被修改,则只重新编译该文件。
- Build All通常意味着重新编译所有的源代码文件。
- Link 意味着将编译后的源代码与库代码组合起来。
- Run或Execute意味着运行程序。
- Debug意味着以步进方式执行程序。
通常IDE允许在辅助窗口中运行程序。程序执行完毕后,有些IDE会立即关闭窗口,为查看输出,必须在程序最后加上一些代码。
cin.get();//add this statement
cin.get();//and maybe this ,too
return 0;
cin.get()
语句读取下一次键击,因此上述语句让程序等待,直到按下了Enter键(在按Enter键之前,键击并不会被发送给程序,因此按其他键都不管用)如果程序在常规输入后留下一个没有被处理的键击,则第二条语句是必须的。
其他系统的编译过程不做介绍,有兴趣的自行查阅。
总结
随着计算机的发展,计算机程序变得越来越庞大而复杂,为应对这种挑战,计算机语言也在不断改进。C++的面世,提高了模块化和创建可重用代码,从而节省编程时间并提高程序的可靠性。
本系列博客,将作为我学习C++的入门笔记,将以书本内容学习加具体项目学习为主要内容,有不足之处还望多多包涵。