作者:禅与计算机程序设计艺术
1.引言
C++17、C++18是近些年才出现的两个版本,它们包含了众多优秀新特性,如统一的初始化语法、自动推导的类型声明、结构化绑定、继承的可视性限定、consteval函数、字符串字面值、新的控制流语句等。当然还有其他很多特性等着我们去发现。除了这些改进之外,C++还引入了一些反直觉的特性。比如,“空指针常量”(nullptr)——允许在编译时创建空指针对象,解决某些场景下的代码健壮性问题;多继承和虚继承——在对象尺寸和内存占用方面都有更好的支持;并行编程和线程安全——为了确保代码正确运行,必须要有线程安全机制。总的来说,作为一个具有现代特征的语言,C++越来越受到工程师的青睐。然而,如果不仔细阅读官方文档,很多程序员仍然会迷失在令人头昏眼花的复杂技术细节中。本文将试图通过详实地讲解这些特性,帮助大家更好地理解它们的含义和使用方法,提升工程师的编码水平。
2.基本概念术语说明
为了能够更好地理解本文的内容,首先需要对一些关键概念和术语进行简单的介绍。
nullptr
nullptr是C++11引入的一个新关键字,它表示空指针常量。它的特点是在编译时创建一个空指针对象,避免了以往使用的NULL宏造成的“头文件依赖循环”问题。
多继承和虚继承
多继承和虚继承是C++里两个相互配合使用的特性。多继承让一个类可以继承多个基类,这样就可以拥有从多个父类的成员中继承来的同名成员。虚继承则是指派生类获得了多个父类共有的基类部分的副本,这样子类就可以拥有自己的非私有成员。这