前 言
欢迎阅读本书。本书是Ivor Horton撰写的Beginning ANSI C++的修订更新版本。自从那本书出版以后,C++语言已经被大量扩展和改进,使得如今已经无法在一本书中详细解释完整的C++语言。本书将介绍C++语言和标准库特性的基本知识,足以让读者开始编写自己的C++程序。学习完本书后,读者将有能力扩展自己的C++技能的深度和广度。
我们假定读者没有任何编程经验。如果读者乐于学习,并且擅长逻辑思维,那么理解C++并没有想象中那么难。通过开发C++技能,读者将学习一种已经有数百万人使用的编程语言,而且这种语言能够用来在几乎任何环境中开发应用程序。
C++非常强大,甚至可以说,它比大部分编程语言更加强大。所以,就像任何强大工具一样,如果不经训练就开始使用,可能造成严重伤害。我们常把C++比作瑞士军刀:由来已久,大众信任,极为灵活,但也可能令人茫然,并且到处是尖锐的东西,可能伤害自己。但是,当有人明明白白解释不同工具的用途,并讲解一些基本的用刀安全守则之后,就再也不需要寻找其他小型刀具了。
学习C++并不像想象中的那样具有很大危险或困难。如今的C++要比许多人想象中的更容易理解。自从40年前C++语言问世之后,现在已经有了长足的改进。我们已经学会了如何以最安全有效的方式使用其强大的功能和工具。而且,可能更重要的是,C++语言及其标准库也相应地发生了演化,更便于使用。特别是,过去十年间,“现代C++”开始崛起。现代C++强调使用更新、更具表达力、更安全的语言特性,并结合经过实践验证的最佳实践和编码指导原则。当知道并应用一些简单的规则和技术后,C++的许多复杂性将随之消失。关键在于有人能够恰当地、循序渐进地解释C++能做什么,还能解释应该使用C++去做什么。这正是本书的目的。
在这本最新修订版中,我们不遗余力,使内容跟上C++编程的这个新时代。当然,与以前的版本一样,我们仍然采用轻松的、循序渐进的方式进行讲解。我们使用许多实用的编码示例和练习题,展示C++旧有的和新增的所有功能。还不只如此:我们更加努力确保总是解释实现某种目的的最适合工具,为什么如此选择,以及如何避免造成失误。我们确保读者从一开始学习C++,就采用安全高效的现代编程风格,而这会是未来的雇主们希望员工具备的技能。
本书讲解的C++语言对应于最新的国际标准化组织(International Organization for Standardization,ISO)标准,常被称为C++20。但是,我们并没有介绍C++20的全部内容,因为相比C++语言之前的版本,C++20所做的一些扩展针对的是高级应用。
如何使用本书
要通过本书学习C++,需要有一个支持C++20标准的编译器和一个适合编写程序代码的文本编辑器。目前有一些编译器在一定程度上支持C++20,其中有几个是免费的。
■注意:在撰写本书时,还没有编译器完全支持C++20。如果过去发生的事情能够作为参考,那么我们相信编译器很快会迎头赶上。https://en.cppreference.com/w/cpp/compiler_support对所有主流编译器支持的C++20特性提供了很好的概览。如果读者使用的编译器还不支持某个特性,则可能需要跳过一些示例,或者用替代方案修改那些示例。
GCC和Clang编译器是免费、开源的编译器,对C++20提供了越来越多的支持。对于新手,安装这两个编译器,并将其与合适的编辑器关联起来并不容易。安装GCC和合适的编辑器有一种简单的方法,即下载一个免费的集成开发环境(IDE),如Code::Blocks或Qt Creator。这些IDE支持使用几种编译器进行完整的程序开发,其中包括GCC和Clang。
另一种选择是使用商用的Microsoft Visual C++ IDE,它运行在Microsoft Windows上。Microsoft Visual C++的Community版本可供个人甚至小规模专业团队免费使用,并且它对C++20的支持与GCC和Clang处于同等水平。Visual Studio提供了一个功能全面、易于使用的专业编辑器和调试器,以及对其他语言(如C#和JavaScript)的支持。
还有其他一些编译器也支持C++20,在网上进行搜索可了解它们。
本书内容应当按顺序阅读,所以读者应该从头读起,直到读完本书。但是,只通过读书是无法学会编程的。只有实际编写代码,才能学会如何用C++编写程序,所以一定要自己输入所有示例(而不要简单地从下载文件中复制代码),然后编译并执行自己输入的代码。这项工作有时候看起来会很枯燥,但是读者会惊奇地发现,仅仅输入C++语句就对理解C++有巨大帮助,在感觉难以理解某些思想的时候更是如此。如果某个示例不能工作,先不要急于翻阅本书来查找原因。试着从代码中分析什么地方出错。这是一种很好的练习,因为在实际开发C++应用程序时,更多的时候需要自己分析代码。
犯错是学习过程中不可缺少的一部分,书中的练习题给了读者大量机会来犯错。自己设计一些练习题是一个好主意。如果不确定怎么解决一个问题,先自己试一试,然后查看答案。犯错越多,对什么地方会出错的理解就越深刻。确保完成所有练习题,并且要记住,只有确定自己解决不了问题时才查看答案。大部分练习题只需要直接运用对应章节中的知识,换言之,它们只是练习而已,但是也有一些练习题需要深入思考,甚至需要一些灵感。
我们希望读者能够掌握C++,并且最重要的是,享受使用C++编写程序的过程。
源代码下载
读者可扫描以下的二维码(也可扫描封底二维码)下载在线提供的附录A,其中包括所有示例和练习的源代码。
怡***7 2022-04-19 13:08:25
没办法吃饭的工具,也要常更新