c++中的指针类型强制转换函数有4个(const_cast,static_cast,dynamic_cast,reinterpret_cast)作用,区别:改访问权限,父类转子类。转换的意义:

指针转换的意义:


不同指针访问内存的方式不同
比如结构体和数据类型
示例: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所占内存空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值