C++的四种强制类型转换

标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast

类型转换的一般形式:cast-name(expression);

我们知道:数据类型不一样,肯定不能赋值,能赋值的原因是发生了一定的类型转换,下面我们来逐一看看C++的类型转换
1.静态转换 static_cast
static_cast的常见用法
(1)用于类层次结构中基类和派生类之间指针或引用的转换
进行上行转换(把派生类的指针或引用转换成基类表示)是安全的
进行下行转换(把基类的指针或引用转换为派生类表示),由于没有动态类型检查,所以是不安全的
(2)用于基本数据类型之间的转换,如把int转换成char。
(3)把空指针转换成目标类型的空指针
(4)把任何类型的表达式转换为void类型

void main()
{
    int i = 23424;
    float f = 42.24f;
    double d ;
    f = static_cast<float>(i);
    i = static_cast<int>(d);
    void *p = &i;
    //cout<<*p<<endl; error C2100: illegal indirection  
    int *q = (int *)p;//如果要输出*p的值,第一种方式,用C语言中的强制类型转换     
    int *q = static_cast<int *>(p);// 第二种方式用C++里面的静态类型转换
    cout<<*q<<endl; 
}
``
2.**常量转换 const_cast**
    去常属性,该运算符只能改变运算对象的底层const,实质:表面改,字符常量无法改变

void main()
{
//常量转换 const_cast
const int i = 321;
const int *p = &i;
int *q = const_cast

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值