正版图书,可开发票,请放心购买。
¥ 55.82 6.3折 ¥ 89 全新
仅1件
作者零壹快学
出版社广东人民出版社有限公司
ISBN9787218139654
出版时间2019-08
装帧平装
开本16开
定价89元
货号10572909
上书时间2024-12-03
第1 章 走进C++
1.1 C++编程语言概述
在现今的社会,软件的应用已经渗透到生活的方方面面之中。我们经常使用的在线服务如打车、交友、聊天、办公、学习和游戏等,都是通过各种各样的编程语言开发完成的。
如今每一种被广泛使用的编程语言,都在某一些场景下有着不可替代的长处和突出的优势。比如,C语言在性能方面好,R语言适合用于统计分析大量的数据,而HTML和JavaScript语言在浏览器场景中有不可比拟的优势。在众多编程语言中,C++是一种灵活强大的编程语言,被广泛应用于所有需要极限优化效率的程序中。学习C++是一件有挑战性的事,但同时也是一件很有成就感的事。通过本书,我们将带你了解C++语言的细节,并加深对计算机系统的理解。
现在,本章将带你走进C++编程语言,体会不一样的编程世界。
1.1.1 C++的历史
C++的前身是“C with classes”,由“C++之父”比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)研发创造。1979年,比雅尼·斯特劳斯特鲁普在准备博士论文的时候使用了Simula语言,其支持面向对象开发。他觉得这种思想适合大型应用软件的开发,但是Simula本身的效率太低。之后,斯特劳斯特鲁普就开始研发“C with classes”了。这个命名说明了它是在C语言的基础上研发的,包含了C语言的特性。C语言的执行速度快、效率高,而且可移植性也好,因此在C语言的基础上加上类和继承等面向对象的特性之后,将发明出一种新的、效率高且能开发大型软件的强大语言。
“C with classes”的第一个编译器叫作Cfront,它的工作原理是把“C with classes”的代码转换成纯C语言的代码。Cfront的代码大多是用“C with classes”编写的,因为难以集成C++的异常处理机制,所以Cfront在1993年就退出了历史舞台,但Cfront对之后的C++编译器和UNIX都产生了深远的影响。
【提示】
计算机运行程序时使用的指令是编码过的抽象的二进制序列,而程序员在开发过程中需要一种方便人们理解的编程语言,而C++就是这样一种语言。将编程语言翻译成计算机指令的工具就叫作编译器。不同的编译器支持不同的开发平台,也会对编程语言进行不同的优化而生成不同的机器指令。
1983年,“C with classes”改名为“C++”,许多新特性被加入其中,如虚函数、函数重载、const等。1985年,《C++程序设计语言》(The C++ Programming Language)第1版出版,由于没有正式的C++标准,这本书成了当时的重要参考。在此期间,C++又增添了许多功能。1998年,C++编程语言的第一个国际标准——C++ 98标准正式发布,并且将标准模板库STL收录其中。2011年,C++ 11标准问世,该版本添加了许多新功能,简化了许多语法,使C++语言的功能更加强大了。
1.1.2 C++的发展历程
本节将简述C++编程语言这几十年的发展历程,感兴趣的读者可以通过拓展资料来了解,本书不详细展开。
1979年,比雅尼·斯特劳斯特鲁普实现C with Classes,在C语言的基础上添加了类(构造函数与析构函数、成员函数、公有私有访问控制、友元)、派生类、内联函数、默认实参等功能。
1982年,C with Classes参考手册发布。
1984年,C84实现,发布参考手册。
1985年,Cfront 1.0发布,增加虚函数、重载、引用、const关键字、new和delete操作符、作用域操作符等特性。
同年,《C++程序设计语言》第1版出版。
1986年,“whatis?”提案把设计目标写入文档,包含了多重继承、异常处理和模板。
1987年,GCC 1.15.3支持C++(g++ 。
1989年,Cfront 2.0发布,增加多重继承、保护访问控制、抽象类等特性。
1990年,ANSI C++委员会成立。
同年,《C++注解参考手册》(The Annotated C++ Reference Manual)出版。
同年,添加命名空间、模板、异常处理等功能。
1991年,Cfront 3.0发布。
同年,ISO C++委员会成立。
同年,《C++程序设计语言》第2版出版。
1992年,STL在C++中实现。
1997年,《C++程序设计语言》第3版出版。
1998年,C++ 98标准发布,增加转换运算符、mutable关键字、RTTI、bool类型等特性。
1999年,委员会成员成立Boost,旨在开发新的高质量库以作为标准库的候选库。
2003年,C++ 03标准发布,添加了新特性——值初始化。
2007年,扩展库TR1发布,将来自Boost以及C99的一些内容添加到C++标准库中。
2010年,扩展C++标准库,添加了一些特殊数学函数。
2011年,C++ 11标准发布,添加了大量新特性,包括auto和decltype、右值引用、列表初始化、long long类型、lambda表达式、区间遍历等。
同年,十进制浮点数TR发布。
2012年,标准C++基金会成立。
2013年,《C++程序设计语言》第4版出版。
2014年,C++ 14标准发布,添加了变量模板、泛型lambda、二进制字面量等特性。
2017年,C++ 17标准发布,添加了折叠表达式、inline变量、条件语句的初始化器等特性。
1.1.3 C++的特性与使用场景
C++与现在主流的面向对象编程语言有比较大的区别,有一部分原因是C++继承了C语言的绝大部分功能,所以它也能像C语言那样直接使用指针操纵内存,直接与底层交互,也可以知道数据的大小并进行优化;而更新的语言如Java、C#等都建立在类似虚拟机的中间层之上,因此程序员可以进行的优化十分有限。除此之外,C++也支持类、虚函数、继承等能实现面向对象编程的功能,而且还包含模板等支持泛型编程的功能。
对于使用场景来说,随着Web应用以及移动端应用的兴起,尽管已经有越来越多基于其他语言的框架由于易用性等特点取代了基于C++的框架,但是 C++作为一种可以接触底层的语言,在许多性能敏感的场景中还是无法替代的。这其中包括了游戏编程、音频视频图像处理,以及所有靠近操作系统层的底层系统应用和基础设施。但由于C++实在太灵活了,存在许多导致程序出错的陷阱,致使开发调试成本上升,因此一般的应用程序和工具脚本就没有使用C++的必要了。
1.1.4 C++与C语言
C++是在C语言的基础上发展而来的,因此C++几乎支持C语言的所有功能。也可以说,C语言就是C++的一个子集。C++不但不需要花费许多时间去重新定义一些如函数及变量之类的基本程序语言功能,而且大量C程序也无须修改就可以被C++的编译器编译,可以说C++是向前兼容了C语言。
但是,C++与C语言的编程思想并不一样。C语言没有类和面向对象的概念,我们所能做的就只有过程式编程,将指令和数据组织成一块一块的子过程,也就是函数;而C++在C语言的基础上增加了类、模板等功能,编程的思想和范式也不一样了。在使用C++进行程序设计的时候,我们不考虑如何把算法和功能组织成函数,而是考虑如何将程序中的物件抽象为类,并且定义类之间的关系和互动。此外,C++可以通过模板实现泛型编程,也就是说,在编程的时候我们不需要考虑函数参数或者容器元素的类型。
— 没有更多了 —
以下为对购买帮助不大的评价