指针转换的意义:
不同指针访问内存的方式不同
比如结构体和数据类型
示例:int a = 10;
char *p = reinterpret_cast<char*>(&a);,
int *p,指针移动一次4个字节
char *p 指针移动一次1个字节
转换后:char * 访问int
修改访问权限:
1. const_cast
作用:用于修改类型的const、volatile属性。常量指针转换为非常量指针,以便修改指针所指向的对象
示例:const int a = 5; int *ptr = const_cast<int*>(&a); *ptr = 10;,
这里通过const_cast去除了a的常量性,从而可以通过指针ptr修改a的值。
父类转子类
//成功不成功,不知道
static_cast
父类转子类
父类转子类
dynamic_cast
//转换是否成功,有true和false
作用:用于在类的继承体系中,进行安全的向下转型(从基类到派生类)检查,在运行时对类型转换进行检查,并返回转换是否成功。
reinterpret_cast
任意类型之间的转换
示例:int a = 10; char *p = reinterpret_cast<char*>(&a);,这里是将整数变量a的地址转换为字符指针p,使得可以按照字符的方式去访问a所占内存空间。