标准C++开发⼊门与编程实践
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)和多态(pol
ymorphism)等。 第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++感兴趣的程序员进⾏阅读。
⽬录:
第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
第3章初识C++程序 33
3.1 开始C++编程 34
3.1.1 C++程序的开发流程 34
3.1.2 ⽂件与⼯程(项⽬) 35
3.2 在Dev-C++中开发HelloWorld 37
3.2.1 编辑HelloWorld 38
3.2.2 编译连接HelloWorld 38
3.2.3 运⾏HelloWorld 39
3.3 在VC 2003中开发HelloWorld 39
3.3.1 编辑HelloWorld 40
3.3.2 编译连接Hello World 42
3.3.3 运⾏HelloWorld 43
3.4 可能遇到的问题 43
3.5 理解HelloWorld 45
3.5.1 main函数 45
3.5.2 函数 45
3.5.3 对象 46
3.5.4 头⽂件 46
3.5.5 名字空间 46
3.5.6 标准输⼊输出 47
3.5.7 编译器的⾏为 48
第2篇 C++数据表达
第4章 C++基础语法 51
4.1 理解c=2πr 52
4.2 注释 53
4.3 标识符 53
4.3.1 命名规则 53
4.3.2 关键字 54
4.4 数与类型 55
4.5 基本类型 55
4.5.1 整型 56
4.5.2 浮点型 56
4.5.3 布尔型 57
4.5.4 字符型 57
4.5.5 基本类型的字节长度* 57 4.6 字⾯常量 58
4.6.1 整型常量 59
4.6.2 浮点型常量 59
4.6.3 布尔型常量 59
4.6.4 字符型常量 60
4.6.5 字符串常量 60
4.6.6 字⾯常量的类型* 61
4.6.7 变量 62
4.7 语句 62
4.7.1 表达式 62
自学编程的书籍4.7.2 语句 62
4.7.3 声明语句 62
4.7.4 赋值语句 63
4.7.5 初始化语句 63
4.7.6 使⽤调试器观察变量值* 64 4.8 操作符 67
4.8.1 赋值操作符 67
4.8.2 算术操作符 68
4.8.3 关系操作符 69
4.8.4 逻辑操作符 69
4.8.5 条件操作符 70
4.8.6 位操作符 70
4.8.7 观察⼆进制位操作* 71
4.8.8 复合赋值操作符 72
4.8.9 逗号操作符 73
4.8.10 sizeof操作符 74
4.8.11 typeid操作符 74
4.8.12 操作符的优先级 75 4.9 类型转换 76
4.9.1 隐式转换 76
4.9.2 显式转换 76
4.9.3 算术转换* 77
第5章数组与字符串 79 5.1 数组 80
5.1.1 数组的概念 80
5.1.2 内存中的数组* 80
5.1.3 数组的初始化 81
5.1.4 数组元素的访问 82
5.1.5 安全使⽤数组下标* 82
5.1.6 多维数组 83
5.2 字符串 85
5.2.1 传统的字符串 85
5.2.2 安全的使⽤字符串* 86
5.2.3 std::string 86
第6章指针与引⽤ 89 6.1 指针 90
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论