关键字
typedef
用于给已有类型取别名,typedef关键字后可能接一长段,遵循正常声明变量声明的语法,变量的名字即为别名,例如:
存在以下特别的情况:
-
结构体
结构体本身就是自定义类型,在C++中可以像用别名一样直接用结构体名创建对象,为结构体取别名通常是为了兼容老代码(在C中,创建结构体对象必须用struct+结构体名作为类型名),且和声明语法有所区别:
-
类
不必像简单的数据结构一样把类定义写在
typedef后,在完整的类定义后使用typedef+类名+别名即可。
Union
联合体,允许在同一段内存中存储不同的数据类型中的一种,其长度是所有允许类型中最长的长度。
它有以下特点:
- 本质是一个结构体
- 它的左右成员相对于基地址的偏移量都是0
- 此结构的空间需要足够容纳最长的成员
- 内存对齐方式需要适用于所有成员
=default
显式地使用默认构造方法。
默认情况下,如果一个类包含包含带参构造函数,则默认生成的无参构造函数会被隐藏且无法被调用。此时如果想让该无参构造函数变为可用,则需要使用=default显式声明,例如:
=delete
显式地禁用指定方法被调用。
常用于禁止类被拷贝和赋值,例如:
类型转换
reinterpret_cast\(expr)
强制类型转换,将一个类型的指针转换为另一个类型的指针。这一方法并不改变指针本身的类型,仅生成一个临时的匿名对象,使仅接受特定类型指针的方法可以接收该指针。例如:
Map方法仅接受一个指向空类型的指针的地址,而mp_passCBMapped是一个UINT*类型的指针,因此此处需要使Map方法认为&mp_passCBMapped是一个void**类型的实例。但mp_passCBMapped本身不因为reinterpret_cast发生任何变化。
const_cast\(expr)
转换对象的const属性。