1.C++提要
C++是在C语言基础之上开发的一种语言,是C语言的超集,‘++’取至C语言中的自加运算符,其意义不言而喻。学习C++是一次探索之旅,C++是一种令人兴奋的语言,在二十世纪九十年代便是最重要的编程语言之一,并在二十一世纪仍然保持强劲的势头。C++既继承了C语言高效,简介,快速和可移植性的传统,又为应对复杂程度不断提高的现代编程任务而设计出了面向对象编程和模板特性所支持的泛型编程。
2.C++简史
在过去的几十年,计算机技术以令人惊讶的速度发展着,当前笔记本电脑的计算速度和存储信息的能力超过了二十世纪六十年代的大型机。计算机语言也得到了发展,尽管变化可能不是天翻地覆的,但也是非常重要的。体积更小,功能更强的计算机也引出了更大,更复杂的程序,而这些程序在程序管理和维护方面带来了新的问题。
2.1 C语言由来
二十世纪七十年代早期,贝尔实验室的Ritchie致力于开发UNIX操作系统,为完成这项工作,Ritchie需要一种能简洁,快速,有效控制硬件的语言。传统上,当时的程序员使用汇编语言来满足这些需求,汇编语言依赖于内部机器语言。但是这是一种直接操作CPU寄存器和内存单元的低级语言,因为汇编语言针对于特定的计算机处理器,要将汇编程序移植到另一台计算机上,必须重新编写程序。这就像宁买了新车,它和旧车控制部位的位置不同,宁就需要重新学习熟练。
但是UNIX目的是为不同的计算机平台工作而设计,这就需要一种高级语言,高级语言致力于解决对应的问题,而不是直接操作硬件。(这就像宁知道手动车起步只需要踩离合,挂一档一样,而不需要知道离合具体是怎么实现的)。我们需要知道,一种被称为编译器的特殊程序能将高级语言翻译成特定的计算机内部语言,这样各个平台就可以通过使用不同的编译器在各自平台上使用同一个高级语言程序了。于是Ritchie这位牛逼的大佬又开发出了C语言。
2.2 C语言编程思想
一般来说,程序分为数据结构和算法两个部分。数据是程序使用和处理的信息,而算法是程序使用的方法,说明书。C语言在最初面世时也是过程性语言,计算机处理问题按照步骤一步一步来解决。就像菜谱指定了宁做蛋糕时应遵循的一系列步骤一样。
随着程序发展和规模的扩大,早期语言都会遇到组织方面的问题,例如,程序经常使用分支语句来判断执行什么命令。很多旧式程序执行路径很混乱,几乎不可能通过直接阅读程序来理解它,更别提修改程序。因此一种更有序的编程方法--结构化编程出现了,C语言具有使用这种方法的特性。还有一种新原则是自上而下的设计,在C语言中,其理念时将大型程序分解成小型,便于管理的任务。如果任务仍然过大,直到将程序分解成小型的,易于编写的模块。(比如宁要整理房间,先整理客厅,再打扫卧室,最后清洁厕所。宁就会先从客厅开始,客厅又分为饭桌,茶几,沙发,最后确定先清理饭桌,再是茶几。。。)
2.3 面向对象编程
虽然结构化编程的理念提高了程序的清晰度,可靠性,并使之便于维护,但它在编写大型程序时,仍面临挑战。为应对这种挑战,OOP提供了一种新思想,与强调算法的过程性编程不同的是,OOP强调的是数据,OOP不是使问题满足语言的过程性方法,而是试图让语言来满足问题的要求。(宁要炒一个番茄炒蛋,强调过程的C语言表现起来就像这样:先洗菜切菜,再打蛋,再开火放油,炒蛋。。。。但是面向对象思路体现起来更像是这种方式:先安排一个人这个类对象,再取出菜类中的番茄对象和蛋类对象,最后赋予人这个对象执行炒菜的具体方法。)
C++中,类更像是一种规范,它描述了这种新型的数据格式,而对象是根据这种规划所实例化的特定数据结构。类规定了可使哪些数据来表示对象以及可对数据执行哪些操作,这就是一个类包含的属性和方法两个部分。例如,假设宁要开发一个五子棋对战游戏,那么五子棋就可以用类来实现,这个类的属性包含颜色,大小,坐标位置等数据,它的方法可以包含移动,改变大小,改变颜色等操作。这样当需要使用五子棋这个类时,就可以定义创建一个具体对象,该对象保存了描述五子棋的所有数据值。
OOP程序设计方法首先设计类,然后设计一个特定的使用这些类对象的程序,这种从低级组织到高级组织的处理过程叫做自下而上编程。
2.4 C++所带来的