C++类型转换

一、static_cast<想要转换的数据的参数>(待转换的数据的参数)

应用场景:1、static_cast()只能用于基本类型的数据转换且不能用于基本类型指针之间的类型转换

//基本类型的数据转换
int
main() { int a = 10; char b = static_cast<char>(97); cout << b << endl; return 0; }

 

不能用于基本类型指针之间的类型转换会爆红

 

 

 

2、用于有继承关系的子类和父类的指针和引用之间的转换

 

 

 

class Father
{
};

class Son:public Father
{

};

int main()
{
    Father* father = NULL;
    Son* son = NULL;
    //具有继承关系的父子类之间的指针转换
    //1、子类转父类
    father = static_cast<Father*>(son);
    //2、父类转子类
    son = static_cast<Son*>(son);
    return 0;
}

<上述内容引用同理>

 

二、dynamic_cast<想要转换的数据的参数>(待转换的数据的参数)

dynamic_cast()类型转换用于有继承关系的子类和父类的指针和引用之间的转换,且只能实现从子类到父类的转换(dynamic_cast()会有一个在转换前的安全检查,必须满足在继承关系中从子类到父类的转换)

 

 

 如果是实现从父类到子类指针或引用的转换会可能产生访问越界

 

 

 

 

 

 

二、const_cast<想要转换的数据的参数>(待转换的数据的参数)

 

 

三、reinterpret_cast<想要转换的数据的参数>(待转换的数据的参数) 强制类型转换

 

 任何类型的指针都可以转换为其他类型的指针

 

posted @ 2021-11-02 20:38  小康规划  阅读(51)  评论(0)    收藏  举报