工作的原因其实毕业后好久都没有用C++去编写一些项目。只是有时用C语言去作一些硬件的设计。C++20发布后我是有在关注,C++20这次改动还是很大的。尤其是增加的四大新特性:概念(Concept)、协程(Coroutines)、模块(Modules)、范围(Ranges),以及一些语法变化。所以我当时还是很期待的。C++20的新特性可以用来编写更简洁、安全、易用和高效的代码,从而提高软件质量并帮助提高生产力。
记得我们当时学习C++是用的教材是钱能教授的《C++程序设计基础》,当时也会去图书馆借阅《C++Primer》。对于初学者来说这都是我们入门的书籍。无意比较哪本书籍好,网上也有很多说法,可能受制于书籍的面向对象和技术所限,都会有它自己的特点和劣势。但我们也是汲取了其中的营养。我想说的是对于技术的学习实践是最好的方法,也是最大的捷径。而C++20发布后的一段时间,迟迟也是没有进行学习。最近正好遇到了这本由马克.格雷戈勒编写,程序喵大人翻译的《C++20高级编程(第5版)》,加之目前编辑器已经兼容C++20的新特性,燃起了我重温的热情。但大家也知道C++的特性实在是太多了,即使这套书读了七七八八,但很多特性和用法也并没有完全理解和掌握,一些浅见分享给大家。
之前读过前四版的朋友都知道作者马克.格雷戈勒工作履历,所以这本书的受众是有一些C++学习基础,想要提升自身实践能力的朋友。内容编排可以说是非常丰富,从C++的基础知识到高级应用都有涉及。在介绍C++20的新特性时,作者不仅提供了大量的代码示例,还通过讲解代码示例来引导读者逐步掌握C++20的核心概念。全套书分为上、下两册,从章节编排上我们可以看到第一部分“专业的C++简介”,大概用了三章近100页的容量讲解了C++的基础内容,对于这样一个大部头看以看出作者想要通过第一部分内容快速的完成C++基础内容的讲解。其余上册大量的笔墨主要围绕C++20的专业和新特性展开,每一个特性的讲解都包含详细的代码示例和解释,让读者可以深入了解这些新特性在实践中的应用。下半部分,本书详细介绍了C++20标准库的新功能和软件工程,这些新增的功能为C++编程提供了更多的工具和手段,能够大大提高开发效率和程序性能。书中不仅给出了每个功能的使用示例,还深入解释了其工作原理和最佳实践,让读者可以全面掌握这些新功能的应用。但就全套书而言这些新特性并不是独立于哪一个章节,而是贯穿全书的,所以学习起来大家还是要有全局的概念。
解读一个书中给出的新特性“模块(Modules)”吧。模块在引入前,大家使用C++都是通过头文件来重用代码段提供接口的。但在使用过程中随着代码量的增加出现了以下的一些弊端:C++预处理器在遇到头文件时会就地将头文件中的所有字节原模原样地拷贝到包含此头文件的源文件中,而不去分析是否头文件中有不需要被包含的信息。这导致编译时间增加,效率低下,但模块引入后模块只需要编译一次,而不是像头文件那样需要反复编辑,缩短编译时间;同时模块不受任何外部定义宏的影响。因此模块的概念将有助于提高编译效率、改善程序的组织和可维护性、以及增强程序性能。
作者在书中给出了详细案例讲解了模块的使用,有模块接口文件和模块实现文件。因此可将代码分成接口文件和实现文件,类似头文件和cpp文件。虽然模块有这么多的好处,但受制于成书之时编辑器功能所限,很多编辑器不能使用模块,作者甚至给出了将代码非模块化的方案。
《C++20高级编程(第5版)》详细介绍了C++20的最新特性和标准库功能,提供了大量的实用建议和代码示例。这本书不仅适合C++程序员阅读,还适合那些希望转向C++或者提升C++技能的开发人员。
相关推荐
© 2023-2025 百科书库. All Rights Reserved.
发表评价