C++20中的关键字

文章目录

  • 前言
  • 关键字列表
  • 关键字含义
  • 总结

前言

源于上一篇中提到了 decltype是一个关键字,所以去查了现有的关键字列表,其实我对C/C++的关键字还停留在上世纪大概30多个的时代,虽然知道C++加了 autoconstexpr 等关键字,但查询过后才发现原来他扩充到了将近100个,而C语言的关键字也扩到了六七十个,有点震惊了。

关键字列表

keywords
这份列表来源于cppreference,感兴趣的可以去看原文,下面对这些关键字进行一个简单的介绍,有些还是很陌生的。

关键字含义

关键字含义
alignas指定类型或对象的对齐要求
alignof查询类型的对齐要求
and用作 && 的替代写法
and_eq用作 &= 的替代写法
asm汇编(asm)声明给予在 C++ 程序中嵌入汇编语言源代码的能力
atomic_cancel (TM TS)原子块,若抛出异常,则调用 std::abort,除非该异常是用于事务取消的异常之一,这种情况下事务被取消
atomic_commit (TM TS)原子块,若抛出异常,则正常地提交事务
atomic_noexcept (TM TS)原子块,若抛出异常,则调用 std::abort
auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型(C++11)
bitand用作 & 的替代写法
bitor用作 | 的替代写法
bool足以存放两个值 true 或 false 之一的类型
break控制将被转移到紧跟其外围循环或 switch 的下一位置
case根据条件的值,将控制流转移到若干语句之一
catch和try联合使用,将一或多个异常处理块(catch 子句)与复合语句关联
char能在目标系统上最有效地处理的字符表示的类型
char8_tUTF-8 字符表示的类型,要求大到足以表示任何 UTF-8 编码单元( 8 位)
char16_tUTF-16 字符表示的类型,要求大到足以表示任何 UTF-16 编码单元( 16 位)
char32_tUTF-32 字符表示的类型,要求大到足以表示任何 UTF-32 编码单元( 32 位), C++ 标准还保证 1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)
class声明类
compl用作 ~ 的替代写法
concept声明具名类型要求
const类型限定符,定义类型为常量
consteval指定函数是立即函数(immediate function),即每次调用该函数必须产生编译时常量
constexpr指定变量或函数的值可在常量表达式中出现,在 constexpr if 语句中,条件的值必须是可按语境转换到 bool 类型的经转换常量表达式
constinit断言变量拥有静态初始化,即零初始化与常量初始化
const_cast用const_cast来去除const限定
continue导致外围 for、范围 for、while 或 do-while 循环体的剩余部分被跳过
co_await协程是能暂停执行以在之后恢复的函数
co_return协程中的 return 语句
co_yield协程中表达式向调用方返回一个值并暂停当前协程
decltype检查实体的声明类型,或表达式的类型和值类别
default1.switch 语句用于声明默认情况标号。2.显式默认化的函数定义令编译器为某个类生成特殊成员函数或比较运算符的显式指令
delete1.销毁先前由 new 表达式分配的对象,并释放获得的内存区域。2.弃置函数(C++11 起)
dodo-while 循环,用作循环的声明
double浮点类型
dynamic_cast沿继承层级向上、向下及侧向,安全地转换到其他类的指针和引用
elseif 语句用作另一分支的声明
enum声明枚举类型
explicit1.指定构造函数或转换函数 (C++11 起)或推导指引 (C++17 起)为显式,即它不能用于隐式转换和复制初始化。2.explicit 说明符可以与常量表达式一同使用。当且仅当该常量表达式求值为 true 时函数为显式。
export1.用于标记模板定义为被导出,这允许在其他翻译单元中声明但不定义同一模板。(C++11 前) 2.不使用并保留该关键词。(C++11 起)(C++20 前) 3.标记一个声明、一组声明或另一模块为当前模块所导出。(C++20 起)
extern1.具有外部连接的静态存储期说明符 2.语言连接说明 3.显示模板实例化声明(或“extern 模板”)
false布尔字面量
float单精度浮点类型
for用于该循环的声明
friend友元声明出现于类体内,并向一个函数或另一个类授予对包含友元声明的类的私有及受保护成员的访问权。
goto无条件转移控制流。当使用其他语句不可能将控制转移到所需位置时使用。
if有条件地执行另一条语句。用于需要基于运行时或编译时条件执行的代码。
inline1.将函数声明为一个 内联(inline)函数。完全在 class/struct/union 的定义之内定义的函数,无论它是成员函数还是非成员 friend 函数,均为隐式的内联函数。2.内联命名空间
int基本整数类型
long长整数类型
mutable(1)1.容许在即便包含它的对象被声明为 const 时仍可修改声明为 mutable 的类成员。2.mutable 用于指定不影响类的外部可观察状态的成员(通常用于互斥体、记忆缓存、惰性求值和访问指令等)。3.从按复制捕获的形参中移除的 const 限定性的 lambda 声明符 (C++11 起) 4.被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中
namespace命名空间声明
new.创建并初始化拥有动态存储期的对象,这些对象的生存期不受它们创建时所在的作用域限制
noexcept (C++11 起)1.noexcept 运算符进行编译时检查,若表达式声明为不抛出任何异常则返回 true 2.指定函数是否抛出异常
not用作 ! 的替代写法
not_eq用作 != 的替代写法
nullptr (C++11 起)代表指针字面量,保持空指针常量的含义
operator重载的运算符是具有特殊的函数名的函数
or用作
or_eq用作 |= 的替代写法
private该访问说明符之后的各个成员具有私有成员访问
protected该访问说明符之后的各个成员具有受保护成员访问
public该访问说明符之后的各个成员具有公开成员访问
reflexpr (反射 TS)反射是指程序在运行时动态获取对象属性与方法的一种机制
register1.动存储期,另提示编译器将此对象置于处理器的寄存器。2.不使用并保留该关键词
reinterpret_cast通过重新解释底层位模式在类型间转换。
requires (C++20 起)1.对模板形参指定一个求值为要求的常量表达式。 2.于模板声明中指定关联制约
return终止当前函数并返回指定值(若存在)给调用方函数
short至少 16 位的宽度(和long一样表示大小)
signed目标类型将拥有有符号表示(若省略则此为默认)
sizeof(1)1.查询对象或类型的大小。2.在需要知道对象的实际大小时使用。3.返回形参包中的元素数量
static1.声明具有静态存储期和内部连接的命名空间成员。2.定义具有静态存储期且仅初始化一次的块作用域变量。3.声明不绑定到特定实例的类成员
static_assert (C++11 起)进行编译时断言检查
static_cast用隐式和用户定义转换的组合在类型间转换
struct1.复合类型的声明。2.有作用域枚举类型的声明(C++11 起) 3.若存在于作用域中的某个函数或变量所拥有的名字,与某个非联合体类类型的名字相同,则可在其名字之前加上 struct 来消歧义,这产生一个详述类型说明符
switch根据条件的值,将控制流转移到若干语句之一
synchronized (TM TS)程序中的所有最外层同步块都以一个单独的全序执行
template1.声明模板。 2.在模板定义中,template 可用于将某个待决名声明为模板
thisthis 是一个纯右值表达式,其值是隐式对象形参(在其上调用非静态成员函数的对象)的地址
thread_local (C++11 起)线程存储期
throw1.对错误条件发信号,并执行错误处理代码 2.列出函数可能直接或间接抛出的异常
truebool 类型的纯右值,为真
try将一或多个异常处理块(catch 子句)与复合语句关联
typedef创建能在任何位置替代(可能复杂的)类型名的别名
typeid查询类型的信息。用于必须知晓多态对象的动态类型的场合以及静态类型鉴别
typename1.在模板声明中,typename 可用作 class 的代替品,以声明类型模板形参和模板形参 (C++17 起) 2.在模板的声明或定义内,typename 可用于声明某个待决的有限定名是类型。3.在模板的声明或定义内, (C++11 前)typename 可在非待决的有限定类型名之前使用。此情况下它没有效果。4.在类型要求的要求中。(C++20 起)
union1.联合体类型的声明。2.若存在于作用域中的某个函数或变量所拥有的名字与某个联合体类型的名字相同,则可在该名字之前加上 union 以消歧义,这产生详述类型说明符
unsigned目标类型将拥有无符号表示
using1.对命名空间的 using 指令及对命名空间成员的 using 声明。2.对类成员的 using 声明。3.类型别名与别名模板声明 (C++11 起)
virtual1.虚函数说明符。2.虚基类说明符
void1.void 类型。2.无形参函数的形参列表
volatile定义类型为易变,确保本条指令不会因编译器的优化而省略,且要求每次直接读值
wchar_t宽字符表示的类型
while1.while 循环的声明。2.do-while 循环终止条件的声明
xor作为 ^ 的替代写法
xor_eq用作 ^= 的替代写法

总结

  • C++关键字从C++11开始快速扩张,到C++20标准已经有100个左右了
  • C语言关键字发展到现在也有60多个了
  • xor_eqor_eq 这些关键字就是对原来的运算符号换了个写法,感觉上没有什么用,只是不用敲特殊符号了

==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

好日子都是自己争取来的~

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

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

相关文章

计算机网络(三):数据链路层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 数据链路层概述 1.1 数据链路层在网络体系结构中所处的地位 链路 (Link) 就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点 数据链路 (Data Link)…

3.primitive主数据类型和引用 认识变量

3.1 声明变量 Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么样的悲剧&#xff1f;并且它也不会让你将浮点数类型变量放进整数类型的变量中&#xff0c;除非你先跟编译器确认过数字…

【状态估计】将Transformer和LSTM与EM算法结合到卡尔曼滤波器中,用于状态估计(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

JavaWeb:上传文件

1.建普通maven项目&#xff0c;或者maven项目&#xff0c;这里以普通maven为例&#xff0c;区别的jar包的导入方式啦 到中央仓库下载哦 2.结构 3.写fileservlet public class FileServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpSe…

LVS+Keepalived 高可用集群负载均衡

一.keepalived介绍 1.1.Keepalived实现原理 由多台路由器组成一个热备组&#xff0c;通过共用的虚拟IP地址对外提供服务。 每个热备组内同时只有一台主路由器提供服务&#xff0c;其他路由器处于冗余状态。 若当前在线的路由器失效&#xff0c;则其他路由器会根据设置…

三相PWM整流器滞环电流控制Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes&#xff0c;所谓仿函数【不懂&#xff0c;跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

【机器学习】决策树原理及scikit-learn使用

文章目录 决策树详解ID3 算法C4.5算法CART 算法 scikit-learn使用分类树剪枝参数重要属性和接口 回归树重要参数&#xff0c;属性及接口交叉验证代码示例 一维回归的图像绘制 决策树详解 决策树&#xff08;Decision Tree&#xff09;是一种非参数的有监督学习方法&#xff0c;…

Django 前端模板显示换行符、日期格式

linebreaksbr 显示换行符 <td>{{ data.sku_list|default:"无"|linebreaksbr }}</td> date:"Y年m月d日 H:i" 设置日期格式 <td>{{ data.submit_time|date:"Y年m月d日 H:i" }}</td> 其他语法 forloop 获取循环的索引 …

【audio】alsa pcm音频路径

文章目录 AML方案音频路径分析dump alsa pcm各个音频路径的原始音频流数据 AML方案音频路径分析 一个Audio Patch用来表示一个或多个source端到一个或多个sink端。这个是从代码的注释翻译来的&#xff0c;大家可以把它比作大坝&#xff0c;可以有好几个入水口和出水口&#xf…

【新书推荐】当 Python 遇到 ChatGPT —— 自动化办公落地

文章目录 当 Python 遇到 ChatGPT&#xff1a;一种强大的组合1. 文本生成2. 自动翻译3. 对话生成4. 情感分析 新书推荐《Python自动化办公应用大全&#xff08;ChatGPT版&#xff09;&#xff1a;从零开始教编程小白一键搞定烦琐工作&#xff08;上下册&#xff09;》前言内容简…

Neo4j深度学习

Neo4j的简介 Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发&#xff0c;2007年正式发布第一版&#xff0c;其源码托管于GitHtb。Neo4j作为图数据库中的代表产品&#xff0c;已经在众多的行业项目中进行了应用&#xff0c;如&#xff1a;网络管理、软件分析、组织和…

DirectX12_Windows_GameDevelop_3:Direct3D的初始化

引言 查看龙书时发现&#xff0c;第四章介绍预备知识的代码不太利于学习。因为它不像是LearnOpenGL那样从头开始一步一步教你敲代码&#xff0c;导致你没有一种整体感。如果你把它当作某一块的代码进行学习&#xff0c;你跟着敲会发现&#xff0c;总有几个变量是没有定义的。这…

乌班图22.04 kubeadm简单搭建k8s集群

1. 我遇到的问题 任何部署类问题实际上对于萌新来说都不算简单&#xff0c;因为没有经验&#xff0c;这里我简单将部署的步骤和想法给大家讲述一下 2. 简单安装步骤 准备 3台标准安装的乌班图server22.04&#xff08;采用vm虚拟机安装&#xff0c;ip为192.168.50.3&#xff0…

STC89C51基础及项目第10天:LCD显示字符(非标协议外设)

1. 初识LCD1602&#xff08;233.79&#xff09; 非标协议外设 LCD1602显示 LCD1602&#xff08;Liquid Crystal Display&#xff09;是一种工业字符型液晶&#xff0c;能够同时显示 1602 即 32 字符(16列两行) 引脚说明 第 1 脚&#xff1a; VSS 为电源地第 2 脚&#xff1…

SpringBoot项目默认使用HikariDataSource数据库连接池修改使用Druid连接池

1.启动项目&#xff0c;查看正在使用的链接池。 2.在pom.xml文件中引入驱动 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version></dependency> 3.在ap…

机器视觉工程师,公司设置奖金,真的为了奖励你吗?其实和你没关系

​据说某家大厂&#xff0c;超额罚款&#xff0c;有奖有罚很正常&#xff0c;但是我觉得你罚款代理商员工就不一样了&#xff0c;把代理商当成你的员工&#xff0c;我就觉得这些大厂的脑回路有问题。 有人从来没听说过项目奖金&#xff0c;更没有奖金。那么为什么设置奖金呢&a…

数字化转型频频失败?一体化模式提供新的思考

数字化连续6年出现在政府报告中&#xff0c;从《中小企业数字化赋能专项行动方案》到《关于推进“上云用数赋智”行动》、《“十四五” 规划和 2035 年远景目标建议》、《中小企业数字化转型指南》&#xff0c;再到2023年2月《数字中国建设整体布局规划》&#xff0c;加快数字化…

MM-Camera架构-ProcessCaptureRequest 流程分析

文章目录 processCaptureRequest\_3\_41.1 mDevice1.2 mDevice->ops->process\_capture\_request1.3 hardware to vendor mct\_shimlayer\_process\_event2.1 mct\_shimlayer\_handle\_parm2.2 mct\_shimlayer\_reg\_buffer processCaptureRequest_3_4 sdm660的摄像头走…