20世纪80年代,Bjarne Stroustrup发明并实现了C++语言。一开始C++语言只是作为C语言的增强版(C with Classes)出现的,但是随着C++编程技术的发展,虚函数、运算符重载、多重继承、模板、异常、RTTI、名字空间等新的特性逐渐被加入C++。由此,1998年国际标准组织(ISO)正式颁布C++程序设计语言的国际标准ISO/IEC 14882?1998,即标准C++语言。
在OOP(面向对象编程)理论盛行的年代(其实也就是10年之前),几乎所有的C++教材,都在宣扬着一种论调:“C++是C的一个超集”,以此宣传C++的易学性和亲和力。实际上,这种说法在渐渐地发生改变。以Standley Lippman所著的《C++ Primer》一书为首的更多的言论认为,就目前学习C++而言,可以认为它是一门独立的语言。它兼容C语言,但是并不依赖C语言,我们完全可以不学习C语言,而直接学习C++语言。也就是说,阅读本书的读者,不必担心自己是否熟悉C语言。
C++语言发展至今,历受Java、C#语言的冲击,其优势及应用领域则变得愈来愈清晰明朗。C++语言目前仍然是专业编程人员的首选语言之一。但是C++语言是一门很复杂的语言。正因为如此,很多程序员仍然固执地认为:C++是唯一的真正的编程语言;很多学校仍然选择C++作为程序设计的第一门语言。这就要求C++初学者必须掌握合理的学习方法和正确的思维习惯,同时要保持足够的信心和耐心,才能真正学好C++语言。
ISO/IEC 14882?1998确立了C++的标准,遗憾的是,由于C++语言过于复杂,以及它经历了多年的演变,几乎没有一种编译器100%的完全符合标准。可喜的是,各家编译器也在努力提高对C++标准的兼容性。这就意味着,采用标准C++,可以在最大程度上使编写的代码具有可移植性;同样的代码,可以在超级计算机的分布式计算环境中和某个嵌入式系统中一样得以编译和运行。因此,当程序员看到一个有用的C++类库的时候,他的第一个问题会是:它是基于标准C++编写的吗?同样的,当读者看到一本新的C++图书上市时,他的第一个问题会是:这本书介绍的是标准的C++吗?
本书介绍的是标准的C++,其中大部分代码都在Microsoft Visual C++.NET 2003和Dev C++4.9.9.2中得以编译与运行。Visual C++.NET和Dev C++是Windows下两款优秀的C++开发工具,据称它们采用的C++编译器对C++标准的支持率分别达到98%和96%。
归结起来,本书具有如下特色:
- 注重知识的完整性。本书力求完整、系统地介绍C++的语法知识。书中同时安排了部分选读内容,并在节标题上以星号“*”标出,希望读者朋友们能够通过这些部分的阅读加深对前面知识的理解。 注重知识的趣味性。很多教材在保持了C++的严谨性的同时也拒绝了读者,特别是拒绝了我们可爱的C++初学者。初学者的耐心和信心很容易受到打击,本书努力让读者在失去耐心之前读完所有的C++知识。
- 注重C++的标准性。如上所述,标准性是本书一直努力遵循的原则。为了便于读者的理解,书中一些章节的某些编译器对C++标准的实现做了部分的猜测,希望读者朋友能够通过这些内容加深对C++的理解,但千万不要就此认为:所有的C++编译器都将采用同样的实现。
- 注重编程的实践性。本书的每一章节,甚至每一知识点,都配有格式化的代码示例。此外,本书第6篇特意安排了“C++编程实践”,介绍C++的标准库函数及实际操作指南,并结合一个《西游记》游戏的模拟程序演示了各种语法知识的综合运用,以方便读者学习。 本书内容系统、完整,共分为6篇24章。
第1篇:C++快速浏览篇。本篇介绍C++的语言背景和计算机数值系统知识,包括了解C++语言、计算机的数值表示和初识C++程序;结合示例工程HelloWorld,详细介绍C++编程的具体步骤,以及C++语言的基本元素,让读者对C++语言有个整体上的认识。 第2篇:C++数据表达篇。本篇介绍C++中的数据类型,即如何将现实中的数据表达出来,包括C++基础语法、数组与字符串(array & string)、指针与引用(pointer & reference)和自定义数据类型(UDT)等。 第3篇:C++过程设计篇。本篇介绍C++中的过程设计,即如何将静态的数据流动起来,实现程序的逻辑,包括C++流程控制、C++函数和预处理(preprocessing)等。 第4篇:C++面向对象编程篇。本篇介绍C++中的面向对象编程(OOP),即类的使用方法,包括C++类(class)、类的特殊函数、继承(inheritance)和多态(polymorphism)等。 第5篇:C++高级特性篇。本篇介绍C++的高级特性,读者一旦掌握了这些高级特性,就可以更好地实现C++编程,包括模板(template)、C++异常处理(exception handling)、名字空间与域和运行时类型信息(RTTI)等。 第6篇:C++编程实践篇。本篇结合C++的实际应用介绍C++的标准库函数以及实际操作指南,包括C++标准库、C++流、STL容器(STL container)、泛型算法(generic algorithm)、C++实践指南和综合实践:《西游记》游戏模拟等。 本书具有由浅入深、通俗易懂和注重实践等特点。本书由白乔编著,何洪波、杨汉玮、沈良忠参与了部分章节编写,并对内容安排提出了很好的意见和建议,在此一并感谢。希望读者能够通过本书的阅读,对标准C++有清晰的认识,并掌握真正实用的编程思想和方法,从而能在C++编程路上走得更远,这是我们最大的期望。
本书适合于没有或者缺乏C++程序设计经验的初学者作为标准C++语言的自学教材,同时也适合已掌握C++基础编程技术、需要提高C++实践能力(包括对标准库函数、STL、泛型算法的使用),以及对标准C++感兴趣的程序员进行阅读。
由于成书仓促,书中纰漏和欠缺之处在所难免,特别是关于C++标准之实现、C++实践指南等开放性的话题,言语之中有失偏颇之处,还望读者不吝赐教和批评。联系信箱:bluejoe2008@gmail.com,详情请垂询http://books.vcer.net/stdcpp。
目录:
第1篇 C++快速浏览
第1章 了解C++语言 3
1.1 编程语言 4
1.1.1 机器语言 4
1.1.2 汇编语言 4
1.1.3 高级语言 5
1.2 C++发展简史 6
1.3 C++开发环境 7
1.3.1 C++编译器 7
1.3.2 C++标准与编译器 8
1.3.3 C++开发环境 9
1.3.4 开发环境的选择 12
第2章 计算机的数值表示 15
2.1 进制系统 16
2.1.1 十进制 16
2.1.2 二进制 16
2.1.3 八进制和十六进制 17
2.2 数值的表示 19
2.2.1 整数的表示 19
2.2.2 负数的表示 19
2.2.3 整数的表示范围 20
2.2.4 浮点数的表示 20
2.2.5 观察数值的二进制表示* 22
2.3 字符的表示 23
2.3.1 ASCII码 23
2.3.2 汉字的编码 25
2.3.3 UNICODE编码 26
2.3.4 观察字符的二进制表示* 27
2.3.5 字符与字体 29
2.3.6 键盘与输入法 29