现代C++语言核心特征解析——专栏介绍

本专栏用来介绍C++新特性,其中包括C++11、C++14、C++17、C++20的特性。

下面是C++各个版本的出现时间:

C++版本 时间
C++112011~2013
C++142014~2016
C++172017~2019
C++202020~2022
C++232023~

接下来特性更新的顺序不会按照书中的目录,而是按照特性出现时间和是否常用的顺序更新。

C++11新特性

  • lamada表达式(11~20)
  • 列表初始化(11、20)
  • 默认和删除函数
  • 强枚举类型(11、17、20)
  • override和final说明符
  • 基于范围的for循环(11、17、20)
  • 内联和嵌套命名空间(11~20)
  • auto占位符(11~17)
  • decltype说明符(11~17)
  • 右值引用(11、17、20)
  • 非静态成员默认初始化(11、20)
  • 指针字面量nullptr(11)
  • 非受限联合类型
  • 委托构造函数
  • 继承构造函数
  • static_assert声明
  • noexcept关键字(11~20)
  • 类型别名和别名模版(11、14)
  • 线程局部存储
  • 常量表达式(11~20)
  • 基础特性的其他优化(11~20)
  • alignas和alignof(11、17)
  • 字面量优化(11~17)
  • 属性说明符和标准属性(11~20)
  • 可变参数模版(11、17、20)
  • 模版参数优化(11、17、20)
  • SFINAE
  • 模版特性的其他优化(11、14)
  • 函数返回后置类型
  • 新基础类型(11~20)

C++ 17新特性

  • 扩展的聚合类型(17、20)
  • 支持初始化语句的if和switch
  • 结构化绑定(17、20)
  •  扩展的inline说明符
  • 确定的表达式求值顺序
  • typename优化(17、20)
  • 类模版的模版实参推导(17、20)
  • 用户自定义推导指引

C++20新特性

  • 三向比较
  • 新增预处理和宏(17、20)
  • 协程
  • 概念和约束

(考虑到新特性给项目代码安全性和稳定性带来的波动,项目组目前用的比较多的还是C++11,并且只涉及我标黑的几个特性。虽然自C++11出世已经12年了,自己对于大多数的特性并不熟悉)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

52 类 110 个常用 Java 组件和框架整理

目录 WEB 容器 数据库 缓存 消息队列 负载均衡 分布式存储 数据库集群 分布式协调 大数据相关 日志收集与分析 搜索 系统监控 分库分表 微服务 RPC 框架 网络框架 MVC 框架 数据层框架 数据库连接池 Redis 客户端 Rest 接口设计与开发 数据参数校验 安全…

【ArcGIS Pro二次开发】(48):三调土地利用现状分类面积汇总统计

之前做了一个三调三大类面积统计,有小伙伴反映太粗糙,想要一个完整的地类面积汇总表。 【ArcGIS Pro二次开发】(35):三调三大类面积统计 本质上并没有多少难度,之前也做过类似的用地用海汇总表,于是拿出来改一改就好了…

python类中的@classmethod和@staticmethod

classmethod classmethod修饰符对应的函数不需要实例化,无需self参数,但需要cls参数以调用类的属性、类的方法 class A:a 10def printb(self, b):print(b)classmethoddef printa(cls):print(cls.a)print(cls().printb(5))A.printa()"""…

scrapy---爬虫中间件和下载中间件

爬虫中间件 # 爬虫中间件 (了解) middlewares.py class MysfirstscrapySpiderMiddleware:classmethoddef from_crawler(cls, crawler):# This method is used by Scrapy to create your spiders.s cls()crawler.signals.connect(s.spider_opened, signalsignals.spider_opene…

JavaScript的static、this、super关键字介绍

JavaScript的static、this、super关键字介绍 static关键字: ☆ static关键字用于定义类的静态方法和静态属性。 ☆ 静态方法是直接与类相关联的方法,不需要实例化类即可调用。 ☆ 静态属性是类本身的属性,而不是实例的属性。 ☆ 在静态方…

Git学习总结

Git学习 目录 Git学习1.基础1.1 Git Commit:提交记录1.2 Git Branch:创建分支1.3 Git Merge:合并分支的方式一1.4 Git Rebase:合并分支的方式二1.5 查看提交记录:提交历史、详细信息、commit_hash1.6 在提交树上移动 2. 高级2.1 HEAD2.2 相对引用2.3 使用相对引用强…

css 弹性布局的详细说明

CSS弹性布局(Flexible Box Layout,简称Flexbox)是一种用于创建自适应和可伸缩布局的CSS模块。它提供了一种简单而强大的方式来对容器中的子元素进行布局,使它们能够自动调整大小、排列和对齐。 Flexbox通过在容器和子元素上应用一…

window 命令笔记

1.查看端口 输入“netstat -ano”并回车可以获得所有网络连接活动的列表,在表中,本地地址IP地址后方冒号之后的即是端口号: 如果想要查找特定的端口可以输入命令“netstat -aon|findstr “端口号””,例如“netstat -aon|findstr…

My_window类(带有next和quit按钮)

运行代码: //My_window类(带有next和quit按钮) #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h"//--…

解决错误 “Plugin ‘maven-clean-plugin:3.1.0‘ not found“ 的方法详解

系列文章目录 文章目录 系列文章目录前言一、检查 Maven 插件版本:二、检查 Maven 仓库:三、检查 Maven 配置:总结 前言 在使用 Maven 构建项目时,可能会遇到错误信息 “Plugin ‘maven-clean-plugin:3.1.0’ not found”&#x…

C++基础算法离散化及区间合并篇

📟作者主页:慢热的陕西人 🌴专栏链接:C算法 📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言 主要讲解了双指针,位运算,离散化以及区间合并。…

有效的括号(C)

bool isValid(char* s) {ST st;StackInit(&st);while (*s) //遍历 -- 与\0终止{//是左括号 压栈if (*s ( || *s [ *s {){StackPush(&st, *s);s;}else{//应对样例: ’]if (StackEmpty(&st)){StackDestroy(&st);return false;}//不是左括号 应该就…

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树、Pipeline、交叉验证

Spark MLlib快速入门(1)逻辑回归、Kmeans、决策树案例 除了scikit-learn外,在spark中也提供了机器学习库,即Spark MLlib。 在Spark MLlib机器学习库提供两套算法实现的API:基于RDD API和基于DataFrame API。今天,主要介绍下Data…

docker k8s

Docker docker到底与一般的虚拟机有什么不同呢? 我们知道一般的linux系统即GNU/Linux系统包括两个部分,linux系统内核GNU提供的大量自由软件,而centos就是众多GNU/Linux系统中的一个。 虚拟机会在宿主机上虚拟出一个完整的操作系统与宿主机完…

在 3ds Max 中对链模型进行摆放姿势处理

推荐: NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 建模和“摆姿势”3D链可能看起来是一项繁琐的工作,但实际上可以通过使用阵列工具并将链中的链接视为骨骼来轻松完成。在本教程中,我将向您展示如何对链条进行建模,并通过…

程序员的自我修养(4)

可执行文件的装载与进程 代码经过预编译,编译,汇编,链接过程后生成可执行文件,但可执行文件只有装载到内存程序才可以运行,这节讲可执行文件在linux下的装载过程,以及与进程的关系等等。 1.程序与进程的关…

oled拼接屏在柳州的户外广告中有哪些应用展现?

柳州oled拼接屏是一种高端的显示屏,它采用了OLED技术,具有高亮度、高对比度、高色彩饱和度、高刷新率等优点,能够呈现出更加真实、清晰、细腻的图像效果。 同时,柳州oled拼接屏还具有拼接功能,可以将多个屏幕拼接在一…

vue element select下拉框回显展示数字

vue element select下拉框回显展示数字 问题截图&#xff1a; 下拉框显示数字可以从数据类型来分析错误&#xff0c;接收的数据类型是字符串&#xff0c;但是value是数字类型 <el-form-item prop"classifyLabelId" :label"$t(item.classifyLabelId)"…

GUI-Menu菜单实例

运行代码&#xff1a; //GUI-Menu菜单实例 #include"std_lib_facilities.h" #include"GUI/Simple_window.h" #include"GUI/GUI.h" #include"GUI/Graph.h" #include"GUI/Point.h"struct Lines_window :Window {Lines_window…

常见的网络攻击

​ 1.僵木蠕毒 攻击业内习惯把僵尸网络、木马、蠕虫、感染型病毒合称为僵木蠕毒。从攻击路径来看&#xff0c;蠕虫和感染型病毒通过自身的能力进行主动传播&#xff0c;木马则需要渠道来进行投放&#xff0c;而由后门木马&#xff08;部分具备蠕虫或感染传播能力&#xff09;构…