目录
C关键字
控制流程
'if', 'else', 'switch',‘case', 'default', 'while', 'do', 'for','goto', 'continue', 'break', 'return'
类型
'int', 'char', 'float', 'double', 'void' , 'short', 'long', 'signed', 'unsigned'
数据化结构
'struct', 'union', 'enum'
类型限定词
’const‘,‘volatile’
存储类
'extern', 'static', 'auto', 'register'
精简解释C语言关键字
- auto - 建议编译器自动推断变量的存储类型
- break - 立即退出最近的循环或者switch语句
- case - 定义switch语句中的一个标签
- char - 定义字符类型的变量 ( 一个字节)
- const - 定义一个常量值,不能被修改
- continue - 跳过当前循环内的剩余部分,直接开始下一个循环
- default - 定义switch语句中的默认分支
- do - 循环语句,至少执行一次
- double - 定义双精度浮点类型的变量
- else - if语句的备选分支
- enum - 定义一个枚举类型
- extern - 表示变量或函数是在其他文件中定义的(可被省略)
- float - 定义单精度浮点类型的变量
- for - 循环语句,可设定初始化、条件和迭代表达式
- goto - 跳转到程序的另一个位置
- if - 条件语句
- int - 整型变量
- long - 长整型变量
- register - 建议编译器将变量存储在寄存器中
- return - 从函数返回一个值
- short - 定义一个短整型变量(两个字节)
- signed - 指定变量为有符号类型
- sizeof - 返回数据类或者变量的大小
- static - 制定静态存储持久性
- struct - 定义一个结构体
- switch - 用于多路分支选择
- typedef - 为类型定义一个新的名字
- union - 定义一个共用体,,其中的成员共享内存
- unsigned - 指定变量为无符号类型
- void - 指定没有返回值或无类型
- volatile - 声明的变量必须从内存中取出值,不需要优化
- while - 循环语句,条件满足时重复执行
C++关键字
c++包含了所有C语言的关键字,并增加了一下关键字, 不常见以标红, 后续会解析
控制访问
'private', 'public', 'protected'
继承和多态
'class','virtual', 'friend', 'this', 'new', 'delete',‘override', 'final'
异常处理
'try', 'catch', 'throw','noexcept'
模板编程
'template', 'typename', 'class', 'namespace'
类型信息
'typeid', 'static_cast','dynamic_cast','reinterpret_cast'
其他
'operator', 'explicit','inline', 'nullptr', 'constexpr', 'decltpe', 'using', 'noexcept'
精简解释C++关键字
- alignas - 指定变量和类型的对齐要求
- alignof - 返回类型的对其要求
- asm - 嵌入汇编代码
- auto - 自动类推导
- bool - 布尔类型
- catch - 捕获并处理异常
- char16_t - 16位字符类型
- char32_t - 32位字符类型
- class - 定义类
- const - 定义不可修改的变量
- constexpr - 定义编译时变量表达式
- const_cast -去除或添加const 属性
- continue - 跳到循环的下一次迭代
- decltype - 推导表达式的类型
- delete - 删除动态分配的内存或者禁用特殊成员函数
- dynamic_cast - 安全地将对象转换为更具体的类型
- explicit - 禁止隐式类型转换
- export - 导出模版
- extern - 变量或者函数是其他地方定义的
- friend - 允许其他类或者函数访问私有的和保护成员
- inline - 建议编译器内联函数
- mutable - 允许在const成员函数中修改
- namespace - 定义命名空间
- new - 动态分配内存
- noexcept - 指明函数不会抛出异常
- nullptr - 空指针常量
- operator - 重载操作符
- private - 类的私有成员
- protected - 类的保护成员
- public - 类的公开成员
- register 0 建议编译器将变量存储在寄存器中
- reinterpre_cast - 进行低级别的重新解释类型转换
- static_assert - 编译时断言
- static_cast - 强制类型转换,比较安全
- struct- 结构体类型(public)
- template - 定义模版
- this - 指向对象自身的指针
- thread_local - 声明线程局部存储的变量
- throw 抛出异常
- try - 尝试执行可抛出异常的代码块
- typedef - 定义类型别名
- typeid - 获取对象类型信息
- typename - 指明后面的标识符是类型
- union - 联合体,多个成员共享同一块内存
- using - 引入命名空间的成员或定义类型别名
- virtual - 声明虚函数或基类
关键字的详细解剖
const
const 能修饰 变量、 指针、 引用、 成员函数。
修饰变量: 说明该变量不能被修改;
修饰指针: 分为常量指针(pointer to const)指针指向的数据不能被修改,指针本身可以被修改指向另一个地址,和指针常量(常量指针,const pointer) 指针本身的值不能被修改(它指向的地址),但它所指向的数据可以被修改,简单的记忆方式, *在const后面 代表这个指针是有个常量指针, * 在const前面这就是一个指针常量, 两个都加const,代表这是一个常量指针常量;
修饰引用:指向的时候常量的引用( Reference to 'const' ), 避免了拷贝,同时避免了函数对于变量的值的更改;
修饰成员函数: 说明该成员函数内不能修改成员函数;
extern
在C语言中, 'extern' 用于声明一个全局变量或者函数,其实际定义在其他的文件红, 这使得不同的源文件中可以访问或者修改一个全局变量,或者调用同一个函数
C++中保留了C的’extern‘用法 , 还添加了一些其他的用法,'extern "c"', 用于指定在c++代码中使用c风格来链接。辅助C++调用C库函数。
Volatile
在C和C++中, ’Volatile'关键字是一个类型修饰符, 用于告诉编译器,被修饰的变量可以在程序控制之外被意外改变,就是说‘Volatile’修饰的变量的值可能在任何时候被更改,编译器不要对这些变量进行优化(例如,缓存它们的值或者移除看起来无用的读取);
被volatile修饰的语句不会直接使用上一个语句对应的变量的寄存器内容,而是重新从内存中读取,同时不会同时发生优化。
static
'static' 能修饰全局变量、局部变量、函数、类成员, 只能被定义一次
修饰局部变量: 局部变量是存在栈区的, 如果用static修饰的局部变量会被存在静态区,在整个程序结束的时候会被释放,static能延长变量的寿命。
修饰全局变量:static对全局变量进行了修饰,改变了作用域,只有这个文件下能看到这个变量
修饰函数 : 静态函数的作用域,限制了函数只能在文件内被访问
修饰类成员:修饰成员变量和成员函数, 修饰成员变量,表示该变量为类以及所有的对象所有,而且不需要生成对象就可以访问该成员, 修饰函数, 表示这个函数属于这个类但并不属于任何特定的独享,同时static函数内不能访问非静态成员
explicit
explicit 修饰构造函数时,可以防止隐式转换和复制初始化
explicit 修饰转换函数时,可以防止隐式转换,但按语境转换除外