?
第1章初识C++
·命名空间·默认参数·字符串类
·控制台输入输出·函数重载·new/delete
·类型增强·引用·强制类型转换
?1.1.1C++发展史
C++是由BjarneStroustrup(比雅
尼·斯特劳斯特鲁普)博士在贝尔实
验室工作期间发明并实现的。最初
C++被称为newC,后来为了体现
它是一种带类的面向对象语言,将
其改名为Cwithclass。直到1982
年,BjarneStroustrup博士将C
withclass命名为C++。
?1.1.1C++发展史
C++的发展大致可以分为三个阶段:
第一阶段从C++语言出现到1995年,这一阶段C++语言基本上是传统类
型上的面向对象语言,并且依靠接近C语言的效率,在计算机中占据着相
当大的比重。在这期间BjarneStroustrup博士完成了经典巨著《The
C++ProgrammingLanguage》第一版;诞生了一个传世经典ARM;
之后模板、异常、命名空间等相继被加入。
?1.1.1C++发展史
第二阶段从1995到2000年,这一阶段由于STL库和后来的Boost库等程序
库的出现,泛型编程设计在C++中的比重越来越大。同时由于Java、C#
等语言的出现和硬件的影响,C++受到了一定的冲击。
第三阶段从2000年至今,以Loki、MPL等程序库为代表的产生式编程和
模板元编程的出现,使C++迎来了发展史上的又一个高峰。这些新技术
和原有技术的融合,使C++成为当今主流程序设计语言中最复杂的语言。
?1.1.2C++的特点
1.保持与C兼容
C++既保留了C语言的所有优点,又克服了C语言的缺点,其编译系统能
检查出更多的语法错误,因此C++比C语言更安全。绝大多数C语言程序
可以不经修改直接在C++环境中运行,用C语言编写的众多库函数可以用
于C++程序中。C++设计成与C兼容,完成了从C到C++的平滑过渡。
?1.1.2C++的特点
2.支持面向对象编程
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简
单、快捷。通过类的层级关系进行编程,实现功能可扩展和增强的接口。
具有诸如JAVA、PHP、Python等面向对象编程语言的特性。
?1.1.2C++的特点
3.拥有丰富的库
利用C++中的标准模板库STL,如set、map、hash等容器,可以快速编
写代码。除此之外,数不胜数的第三方库,如扩充C++标准库的Boost库、
图形库QT、图像处理库OpenCV、机器学习库Tensorflow、线性代数库
Eigen、游戏库OpenGL等,这些优秀的库为企业的项目开发提供了非常
大的支持,是必不可少的部分。
?1.1.2C++的特点
4.支持嵌入式开发
C++在嵌入式开发领域有重要的地位,智能设备在生活随处可见,如智
能手表、机器人等,这些智能设备的底层驱动和上层应用开发离不开
C++语言的支持。C++11标准中增加的新特性,如原子操作、常量表达
式、线程同步机制等,能够更加紧密的和硬件结合。
?1.1.2C++的特点
5.类型安全增强
C++和C语言属于强类型语言,C语言中可以进行强制类型转换,相对自
由灵活。在C++中强制类型转换被认为是设计的不合理,为了兼容C语
言提供了三种类型转换形式。
?1.1.2C++的特点
6.支持垃圾回收机制
大多数面向对象编程语言具有垃圾回收机制,而C++语言不具备垃圾回
收机制,意味着申请的内存资源在使用完成后要自己释放还给系统。
C++11标准的新特性智能指针,实现了内存资源的自动管理,使指针更
加灵活并避免了内存泄漏。
?1.2第一个C++程序
例1-1hello.cpp