c++ 类型转换——c++复习(九)

static_cast

static_cast功能上基本与c的类型转换一致。但是它不能像c把struct转换为int类型;另外不能去除表达式的常量。

    cout<<"static_cast:"<<endl;
    int i=12,j=5;
    double res = static_cast<double>(i)/j;
    cout<<"res = "<<res<<endl;
    float f = 2.3;
    void* pf = &f;
    float * ff = static_cast<float*>(pf);
    cout<<"*ff = "<<*ff<<endl;

const_cast

const_cast只能用于消除表达式的常量性,如果想用它来转换其他的东西,将会出错。

    int cd = 11;
    const int * pcd = &cd;
//    int *pd = static_cast<int*>(pcd);//error
    int* pd = const_cast<int*>(pcd);
    cout<<"*pd = "<<*pd<<endl;

dynamic_cast

dynamic_cast被用于安全地沿着类的继承关系向下进行类型转换,失败的话返回空指针或抛出异常。当然常量性同样无法被消除。

reinterpret_cast

执行期语义,最常用的用途是在函数指针类型之间进行转换。但是要小心使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值