美文网首页
C++中四种cast(强制)转换

C++中四种cast(强制)转换

作者: anycedo | 来源:发表于2019-08-23 20:36 被阅读0次

一、cast转换什么鬼

    cast造型,就像明星的人设,可以修改,对象的类型,我们也可以对其进行‘造型’,得到我们想要的‘类设’。

二、C++中显式cast的几种方式

    static_cast <new_type> (expression)
    静态转换,(1)主要用于内置数据类型之间的相互转换;(2)用于自定义类时,静态转换会判断转换类型之间的关系,如果转换类型之间没有任何关系,则编译器会报错,不可转换;(3)把void类型指针转为目标类型指针(不安全)。

//static_cast.cpp
//内置类型的转换
double dValue = 12.12;
float fValue = 3.14; // VS2013 warning C4305: “初始化”从“double”到“float”截断
int nDValue = static_cast<int>(dValue); // 12
int nFValue = static_cast<int>(fValue); // 3
//自定义类的转换
class A{};
class B : public A{};
class C{};
void main(){
    A *pA = new A;
    B *pB = static_cast<B*>(pA); // 编译不会报错, B类继承于A类
    pB = new B;
    pA = static_cast<A*>(pB); // 编译不会报错, B类继承于A类
    C *pC = static_cast<C*>(pA); // 编译报错, C类与A类没有任何关系。error C2440: “static_cast”: 无法从“A *”转换为“C *”
}

    const_cast
    有三个作用:1.常量指针 被强转为 非常量指针,且仍然指向原来的对象;2.常量引用 被强转为 非常量引用,且仍然指向原来的对象;3.常量对象 被强转为 非常量对象。

    dynamic_cast
    (1)dynamic_cast是运行时处理的,运行时要进行类型检查,而其他三种都是编译时完成的;(2)不能用于内置基本数据类型间的强制转换;(3)使用dynamic_cast进行转换时,基类中一定要有虚函数,否则编译不通过;(4)dynamic_cast转换若成功,返回的是指向类的指针或引用;若失败则会返回NULL;(5)在类的转换时,在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的。在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全。向下转换的成败取决于将要转换的类型,即要强制转换的指针所指向的对象实际类型与将要转换后的类型一定要相同,否则转换失败。

    reinterpret_cast
    

类型转化

相关文章

  • C++中的类型转换

    C++中的类型转换 显示转换 命名的强制类型转换 static_cast dynamic_cast const_c...

  • C++类型转换

    一、C风格的强制类型转换 eg: 二、C++风格的强制类型转换 const_cast ,static_cast ,...

  • 2020-04-22

    上海紫灏 1 动态类型转换 C++动态类型转换有四种const_cast、static_cast、dynamic_...

  • C++中四种cast(强制)转换

    一、cast转换什么鬼     cast,造型,就像明星的人设,可以修改,对象的类型,我们也可以对其进行‘造型’,...

  • C++类型转换

    四种转换的机制 : static_cast 强制类型转换 所有编译器隐式执行的转换都可以由static_cast来...

  • C++的四种类型转换

    文章转载自c的四种类型转换 使用标准C++的类型转换符:static_cast、dynamic_cast、rein...

  • C++智能指针和四种转换

    1、智能指针 智能指针,无需手动释放内存 2、C++中的四种转换 const_cast 转换常量 static_c...

  • C++类型转换

    C++类型转换 C++为了规范C中的类型转换,加强类型转换的可视性,引入了四种强制类型转换操作符:static_c...

  • C++ 学习(2) ---- 基本语法介绍

    C++ 基本语法(2) C++基础语法说明模板NA运算符重载NA强制类型转换static_cast,const_c...

  • (六)C++中的类型转换、IO流与STL标准模板库

    C++中的类型转换与STL标准模板库 一、C++类型转换 在C++中类型转换包含 static_cast、cons...

网友评论

      本文标题:C++中四种cast(强制)转换

      本文链接:https://www.haomeiwen.com/subject/agqxectx.html