C/C++中的关键字
转载自:https://blog.csdn.net/scmuzi18/article/details/53696778
博主:_s西瓜;
来源:CSDN;
C/C++中的关键字如下:
asm | do | if | return | try |
auto | double | inline | short | typedef |
bool | dynamic_cast | int | signed | typeid |
break | else | long | static | typename |
case | enum | mutable | static | union |
catch | explicit | namespace | static_cast | unsigned |
char | export | new | struct | using |
calss | extern | operator | switch | virtual |
const | FALSE | private | template | void |
const_cast | float | protected | this | votatile |
continue | for | public | throw | vchar_t |
default | friend | register | TRUE | while |
delete | goto | reinterpret_cast |
注:上表中为C++98/03中的63个关键字,其中红色标注为C语言中的32个关键字。C++11中有73个关键字,新增加的10个为:alignas、alignof、char16_t、char32_t、constexpr、decltype、noexpect、nullptr、static_assert、thread_local
1、asm
_asm是一个语句的分隔符。不能单独出现,必须接汇编指令。一组被大括号包含的指令或一对空括号。
例:
_asm
{mov al,2mov dx,0xD007out al,dx
}
也可以在每个汇编指令前加_asm
_asm mov al,2_asm mov dx,0xD007_asm out al,dx
2、auto
auto关键字会根据初始值自动推断变量的数据类型。不是每个编译器都支持auto。
例:
auto x = 7; //使用整数7对变量x进行初始化,可推断x为int型。auto y=1.234; //使用浮点数1.234对变量y进行初始化,可推断y为double型。
3、*_cast
即 const_cast、dynamic_cast、reinterpret_cast、static_cast。
C++类型风格来性转换。const_cast删除const变量的属性,方便赋值;dynamic_cast用于将一个父类对象的指针转换为子类对象的指针或引用;reinterpret_cast将一种类型转换为另一种不同的类型;static_cast用于静态转换,任何转换都可以用它,但他不能用于两个不相关的类型转换。
4、bool、true、false
bool即为布尔类型,属于基本类型中的整数类型,取值为真和假。true和false是具有布尔类型的字面量,为右值,即表示真和假。
注:字面量:用于表达源代码中一个固定值的表示法。
5、break、cotinue、goto
break用于跳出for、while循环或switch语句。continue用于调到一个循环的起始位置。goto用于无条件跳转到函数内得标号处。一般情况不建议使用goto,风险较大。
6、switch、case、default
switch分支语句的起始,根据switch条件跳转到case标号或defalut标记的分支上。
7、catch、throw、try
用于异常处理。try指定try块的起始,try块后的catch可以捕获异常。异常由throw抛出。throw在函数中还表示动态异常规范。
8、char、wchar_t
表示字符型和宽字符型这些整数类型(属于基本类型),但一般只专用于表示字符。char(和signed char、unsigned char一起)事实上定义了字节的大小。char表示单字节字符,wchar_t表示多字节字符。
9、const、volatile
const和volatile是类型修饰符,语法类似,用于变量或函数参数声明,也可以限制非静态成员函数。const表示只读类型(指定类型安全性,保护对象不被意外修改),volatile指定被修饰的对象类型的读操作是副作用(因此读取不能被随便优化合并,适合映射I/O寄存器等)。
volatile:
a、当读取一个变量时,为提高存取速度,编译器优化时有时会先把变量读取到一个寄存器中,以后再取变量值时,就直接从寄存器中取值。
b、优化器在用到volatile变量时必须每次都小心地重新读取这个变量的值,而不是使用保存到寄存器里的备份。
c、volatile适用于多线程应用中被几个任务共享的变量。
10、struct、class、union
用于类型声明。class是一般的类类型。struct在C++中是特殊的类类型,声明中仅默认隐式的成员和基类访问限定与class不同(struct是public,class是private)。union是联合体类型。满足特定条件类类型——POD struct或POD union可以和C语言中的struct和union对应兼容。
注:POD类型(Plain Old Data),plain—代表普通类型,old—代表可以与C语言兼容。
11、new、delete
new、delete属于操作符,可以被重载。new表示向内存申请一段新的空间,申请失败会抛出异常。new会先调用operator new函数,再在operator new函数里调用malloc函数分配空间,然后再调构造函数。delete不仅会清理资源,还会释放空间。delete县调用析构函数,其次调用operator delete函数,最后在operator delete函数里面调用free函数。malloc申请内存失败会返回空。free只是清理了资源,并没有释放空间。
12、do、for、while
循环语句的组成部分,C和C++都支持这3种循环。
13、数值类型,如 int、double、float、short、long、signed、unsigned
signed和unsigned作为前缀修饰整数类型,分别表示有符号和无符号。signed和unsigned修饰char类型,构成unsigned char和signed char,和char都不是相同的类型;不可修饰wchar_t、char16_t和char32_t。其它整数类型的signed省略或不省略,含义不变。signed或unsigned可单独作为类型,相当于signed int和unsigned int。
double和float专用于浮点数,double表示双精度,精度不小于float表示的浮点数。long double则是C++11指定的精度不小于double的浮点数。
14、if和else
条件语句的组成部分。if表示条件,之后else表示否定分支。
15、enum
构成枚举类型名的关键字。
16、explicit
该关键字的作用就是避免自定义类型隐式转换为类类型。
17、export
使用该关键字可实现模板函数的外部调用。对模板类型,可以在头文件中声明模板类和模板函数;在代码文件中,使用关键字export来定义具体的模板类对象和模板函数;然后在其他用户代码文件中,包含声明头文件后,就可以使用该这些对象和函数。
18、extern
当出现extern “C”时,表示 extern “C”之后的代码按照C语言的规则去编译;当extern修饰变量或函数时,表示其具有外部链接属性,即其既可以在本模块中使用也可以在其他模块中使用。
19、friend
友元。使其不受访问权限控制的限制。例如,在1个类中,私有变量外部是不能直接访问的。可是假如另外1个类或函数要访问本类的1个私有变量时,可以把这个函数或类声明为本类的友元函数或友元类。这样他们就可以直接访问本类的私有变量。
20、inline
内联函数,在编译时将所调用的函数代码直接嵌入到主调函数中。各个编译器的实现方式可能不同。
21、mutable
mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。
22、namespace
C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。命名空间除了系统定义的名字空间之外,还可以自己定义,定义命名空间用关键字“namespace”,使用命名空间时用符号“::”指定。
23、operator
和操作符连用,指定一个重载了的操作符函数,比如,operator+。
24、public、protected、private
这三个都为权限修饰符。public为公有的,访问不受限制;protected为保护的,只能在本类和友元中访问;private为私有的,只能在本类、派生类和友元中访问。
25、register
提示编译器尽可能把变量存入到CPU内部寄存器中。
26、return
return表示从被调函数返回到主调函数继续执行,返回时可附带一个返回值,由return后面的参数指定。return通常是必要的,因为函数调用的时候计算结果通常是通过返回值带出的。如果函数执行不需要返回计算结果,也经常需要返回一个状态码来表示函数执行的顺利与否(-1和0就是最常用的状态码),主调函数可以通过返回值判断被调函数的执行情况.
27、static
可修饰变量(静态全局变量,静态局部变量),也可以修饰函数和类中的成员函数。static修饰的变量的周期为整个函数的生命周期。具有静态生存期的变量,只在函数第一次调用时进行初始化,在没有显示初始化的情况下,系统把他们初始化微0.
28、sizeof
返回类型名或表达式具有的类型对应的大小。
29、template
声明一个模板,模板函数,模板类等。模板的特化。
30、this
每个类成员函数都隐含了一个this指针,用来指向类本身。this指针一般可以省略。但在赋值运算符重载的时候要显示使用。静态成员函数没有this指针。
31、typedef
typedef声明,为现有数据类型创建一个新的名字。便于程序的阅读和编写。
32、virtual
声明虚基类,虚函数。虚函数=0时,则为纯虚函数,纯虚函数所在的类称为抽象类。
33、typeid
typeid是一个操作符,返回结果为标准库种类型的引用。
34、typename
typename关键字告诉编译器把一个特殊的名字解释为一个类型。
35、using
(1)、在当前文件引入命名空间,例using namespace std;
(2)、在子类中使用,using声明引入基类成员名称。
36、void
特殊的"空"类型,指定函数无返回值或无参数。
C/C++中的关键字相关推荐
- 【Java_基础】Java中Native关键字的作用
本篇博文转载与:Java中Native关键字的作用 转载于:https://www.cnblogs.com/leiblog/p/10529056.html
- C/C++中extern关键字详解
1 基本解释 :extern可以置于变量或者函数 前,以标示变量或者函数的定义在别的文件中 ,提示编译器遇到此变量和函数时在其他模块中寻找其定义 .此外extern也可用来进行链接指定. 也就是说ex ...
- C语言中的关键字详略
首先我们要注意:在C语言中define不是关键字.define是编译器的预编译指令,是编译器实现的,不是C语言的内容. C语言编译器不认识#开头的东西,那些是预处理的事情. C编译器看到的是预处理完成 ...
- java中final关键字的使用
final 中文翻译为 最终的,在java中也是较为常用的关键字之一. 在java 中 final 关键字可以修饰 类.方法.变量 final 修饰在类上,则表示该类不能被继承,如果里面的成员变量没 ...
- JavaScript中this关键字使用方法详解
在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了,用起来是非常方便和意义确定的.JavaScrip ...
- C++中explicit关键字的作用
C++中explicit关键字的作用 explicit用来防止由构造函数定义的隐式转换. 要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换. ...
- java 中关键字_Java中的关键字
Java中的关键字一共有53个,包含常用的51个关键字和2个保留字 1. 保留字 2个:预留的关键字,即Java中未被使用到的关键字 const 保留字,即预留的关键字 goto 保留字,即预留的 ...
- java中的关键字static
原文链接: https://zhuanlan.zhihu.com/p/70110497 昨晚面试中被问到,没能回答出来.这篇答疑文章写得非常好,无一字可增删,遂直接复制. 在平时开发当中,我们经常会遇 ...
- 在Oracle中exception关键字,Oracle表字段有Oracle关键字出现异常解决方案
一.问题由来 现在进行项目改造,数据库需要迁移,由原来的使用GBase数据库改为使用Oracle数据库,今天测试人员在测试时后台报了一个异常. 把SQL语句单独复制出来进行查询,还是报错,仔细分析原因 ...
- 关于Oracle数据库19c中的关键字和保留字的说明
关于Oracle数据库中的关键字和保留字的说明 官方文档节选: You cannot use Oracle SQL reserved words as nonquoted identifiers. ...
最新文章
- python播放本地视频教程_怎样用python播放视频
- 微软技术支持工程师_微软催你买电脑啦!即可+99元即可享受上门帮教服务
- 使用QEMU创建虚拟机
- java 文件读入 数组,将文本文件读入2d数组java
- 【转】最为详尽的WPF类继承关系*!
- 解决ueditor中没法动态配置imageurlprefix的方法
- Git服务器的搭建和使用
- Zookeeper C API 指南三(回调函数)
- 可通过http获取远端服务信息_(二)NebuLogMvcSample如何获取应用日志并定制输出...
- Linux命令学习教程【建议收藏】
- 揭秘黑客攻击内幕和20个黑客相关术语
- iOS 多线程面试题
- 褚霸:阿里开源四部曲,从拥抱到回报
- 【DNS应用案例】智能DNS赋能海运集团全球域名体系建设
- SQL数据库的存错过程中output用法
- Vue3 源码阅读(3):响应式系统 —— 重置 effect 的依赖收集、嵌套的 effect、effect 调度执行
- 封装系统之新手操作版
- 【Python】import class/import module
- 收藏 | 堪称神器的42款Chrome插件
- 最短路问题的线性规划模型
热门文章
- MySQL集群:高可用性DBMS
- svg mysql_!!!常用SVG代码
- js简单动画:匀速动画、缓动动画、多物体动画以及透明度动画
- leetcode 移动零
- KNN-K最近邻算法+实例应用
- 【Python】Python库之图形用户界面
- 分布式团队_我们说的意思是:我们是一个分布式优先团队
- diy 多路监控_如何通过此DIY设置监控空气质量
- ruby on rails_如何在Ruby on Rails应用中用Vue.js替换jQuery
- 乐高积木如何分类更科学_我如何使用(计算机)科学! 处理超过一千个乐高积木