C++ 四种转型

2018-08-28  本文已影响0人  平平文文点滴

1. const_cast

用途:常量的const 属性是不能修改的,一般是去除指针的常量属性, 再对指针进行间接修改。

用法:const_cast(expression) 通过const_cast运算符,也只能将const type*转换为type*,将const type&转换为type&。

const_cast修饰过的指针与原常量地址相同,为什么改变不了内容-CSDN论坛

const_cast的应用 - CSDN博客

const_cast 的原因: 常量转换为非常量。 原因是,我们可能调用了一个参数不是const的函数,而我们要传进去的实际参数确实const的,但是我们知道这个函数是不会对参数做修改的。于是我们就需要使用const_cast去除const限定,以便函数能够接受这个实际参数。 应该遵从这样的原则:使用const_cast去除const限定的目的绝对不是为了修改它的内容,只是出于无奈

2. static_cast

    2.1 编译器隐式执行的任何类型转化都可以 ; 2.2  当一个较大的算术类型赋值给一个较小类型。 2.3 可以将void* 转化为某一类型指针; 2.4 可以将基类指针指向派生类。 2.5 无法将const 转换为none-const.

3. reinterpret_cast

允许将任何指针转换为任何其他指针类型。 也允许将任何整数类型转换为任何指针类型以及反向转换。

4. dynamic_cast

安全的向下转型  dynamic_cast详解 - CSDN博客

上一篇下一篇

猜你喜欢

热点阅读