【编程学习】C++中的关键字含义
数据类型关键字
关键字 | 含义 |
---|---|
char | 声明字符型变量或函数 |
wchar_t | 声明宽字符类型,每个 wchar_t 类型占 2 个字节,16 位宽(汉字的表示) |
int | 声明整型变量或函数 |
float | 声明浮点型变量或函数 |
bool | 声明布尔类型变量或函数 |
double | 声明双精度变量或函数 |
long | 声明长整型变量或函数 |
short | 声明短整型变量或函数 |
struct | 声明结构体变量或函数 |
enum | 声明枚举类型 |
signed | 声明有符号类型变量或函数 |
union | 声明共用体(联合)数据类型 |
unsigned | 声明无符号类型变量或函数 |
void | 声明函数无返回值或无参数;声明无类型指针 |
class | 声明一个类,面向对象设计的基础 |
signed | 声明有符号数(默认就是 signed,一般不会显式使用) |
unsigned | 声明无符号数,与signed 相反。 |
private | 被标明为 private 的字段只能在本类以及友元中访问。 |
public | 被标明为 public 的字段可以在任何类中访问 |
protected | 被标明为 protected 的字段只能在本类以及其继承类和友元中访问。 |
类型限定关键字
关键字 | 含义 |
---|---|
const | const 定义常量,表示该变量的值不能被修改。。 |
volatile | 修饰符 volatile 告诉该变量的值可能会被程序以外的因素改变,如硬件或其他线程。。 |
restrict | 由 restrict 修饰的指针是唯一一种访问它所指向的对象的方式。只有 C99 增加了新的类型限定符 restrict。 |
mutable | 表示类中的成员变量可以在 const 成员函数中被修改。 |
static | 用于定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件或函数访问。 |
register | 用于定义寄存器变量,表示该变量被频繁使用,可以存储在CPU的寄存器中,以提高程序的运行效率。 |
auto | 声明自动变量 |
extern | 声明变量是在其他文件正声明(也可以看做是引用变量) |
控制语句关键字
循环语句
关键字 | 含义 |
---|---|
for | 一种循环语句 |
do | 循环语句的循环体 |
while | 循环语句的循环条件 |
break | 跳出当前循环 |
continue | 结束当前循环,开始下一轮循环 |
条件语句
关键字 | 含义 |
---|---|
if | 条件语句 |
else | 条件语句否定分支(与 if 连用) |
goto | 无条件跳转语句(不建议使用) |
开关语句
关键字 | 含义 |
---|---|
switch | 用于开关语句 |
case | 开关语句分支 |
default | 开关语句中的“其他”分支,默认返回语句 |
return | 函数返回语句,用于返回各种类型的值 |
异常处理
关键字 | 含义 |
---|---|
catch | catch 和 try 语句一起用于异常处理。 |
try | catch 和 try 语句一起用于异常处理。 |
C++独特关键字
- constexpr:C++11新引入关键字,在C++14中进行了改进
- friend:C++中表示友元的关键字
- inline:C++中表示内联的关键字
- new:C++在堆区开辟内存操作符
- delete:C++中释放内存操作符
- throw:C++抛出异常关键字
- namespace:C++命名空间关键字
- using:C++名称空间关键字
- operator:C++运算符重载关键字
其他
1. asm
- asm (指令字符串):允许在 C++ 程序中嵌入汇编代码。
- auto(自动,automatic)是存储类型标识符,表明变量"自动"具有本地范围,块范围的变量声明(如for循环体内的变量声明)默认为auto存储类型。
2. const_cast用法:
1 | const_cast<type_id> (expression) |
该运算符用来修改类型的 const 或 volatile 属性。除了 const 或 volatile 修饰之外, type_id 和 expression 的类型是一样的。常量指针被转化成非常量指针,并且仍然指向原来的对象;常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。
3. delete
delete(删除)释放程序动态申请的内存空间。delete 后面通常是一个指针或者数组 [],并且只能 delete 通过 new 关键字申请的指针,否则会发生段错误。
4. dynamic_cast
dynamic_cast(动态转换),允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构安全地转换类型。dynamic_cast 提供了两种转换方式,把基类指针转换成派生类指针,或者把指向基类的左值转换成派生类的引用。
5. explicit
explicit(显式的)的作用是"禁止单参数构造函数"被用于自动型别转换,其中比较典型的例子就是容器类型。在这种类型的构造函数中你可以将初始长度作为参数传递给构造函数。
6. export
为了访问其他编译单元(如另一代码文件)中的变量或对象,对普通类型(包括基本数据类、结构和类),可以利用关键字 extern,来使用这些变量或对象时;但是对模板类型,则必须在定义这些模板类对象和模板函数时,使用标准 C++ 新增加的关键字 export(导出)。
7. reinterpret_cast
用法:
1 | reinpreter_cast<type-id> (expression) |
type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,在把该整数转换成原类型的指针,还可以得到原先的指针值)。
8. static_cast
用法:
1 | static_cast < type-id > ( expression ) |
该运算符把 expression 转换为 type-id 类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:
- ① 用于类层次结构中基类和子类之间指针或引用的转换。进行上行转换(把子类的指针或引用转换成基类表示)是安全的;进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。
- ② 用于基本数据类型之间的转换,如把 int 转换成 char,把 int 转换成 enum。这种转换的安全性也要开发人员来保证。
- ③ 把空指针转换成目标类型的空指针。
- ④ 把任何类型的表达式转换成void类?
注意 static_cast 不能转换掉 expression 的 const、volitale、或者 __unaligned 属性。
9. template
template(模板),C++ 中泛型机制的实现。
10. this
this 返回调用者本身的指针。
11. throw
throw(抛出)用于实现 C++ 的异常处理机制,可以通过 throw 关键字"抛出"一个异常。
12. typedef
typedef(类型定义,type define),其格式为:
1 | typedef 类型 定义名; |
类型说明定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。
13. typeid
指出指针或引用指向的对象的实际派生类型。
14. typename
typename(类型名字)关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一个 name 使用 typename 关键字:
- 1. 一个唯一的name(可以作为类型理解),它嵌套在另一个类型中的。
- 2. 依赖于一个模板参数,就是说:模板参数在某种程度上包含这个name。当模板参数使编译器在指认一个类型时产生了误解。
15. using
表明使用 namespace。
16. virtual
virtual(虚的),C++ 中用来实现多态机制。