首页 > 其他 > 详细

类型转换

时间:2021-08-24 23:05:41      阅读:42      评论:0      收藏:0      [点我收藏+]

静态转换

  • 使用方式  static_cast< 目标类型>(原始数据)
  • 可以进行基础数据类型转换
  • 父与子类型转换
  • 没有父子关系的自定义类型不可以转换

1.普通类型

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//静态转换  static_cast<要转成的类型>(待转变量);
//基础类型
void test01()
{
    char a = a;
    double d = static_cast<double>(a);
    cout << typeid(d).name() << endl;
}

int main()
{
    test01();
    system("Pause");
    return 0;
}

结果:

技术分享图片

2.父子关系

取地址*转换

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

//静态转换  static_cast<目标类型>(原始对象);
//1.基础类型转换
void test01()
{
    char a = a;
    double d = static_cast<double>(a);
    cout << typeid(d).name() << endl;
}
//2.父子之间转换
class Base{};
class Child:public Base{};
class Other{};
void test02()
{
    Base* base = NULL;
    Child* child = NULL;
    //把Base转成Child 向下转换 不安全
    Child* c2 = static_cast<Child*>(base);

    //把Child转成Base 向上转型 安全
    Base* b2 = static_cast<Base*>(child);

    //转Other类型
    Other* other = static_cast<Other*>(base); //error 类型转换无效 因为它们没有父子关系
}
int main()
{
    test02();
    //test01();
    system("Pause");
    return 0;
}

应用转换

    Animal ani_ref;
    Dog dog_ref;
    //继承关系指针转换
    Animal& animal01 = ani_ref;
    Dog& dog01 = dog_ref;
    //子类指针转成父类指针,安全
    Animal& animal02 = static_cast<Animal&>(dog01);
    //父类指针转成子类指针,不安全
    Dog& dog02 = static_cast<Dog&>(animal01);

 

类型转换

原文:https://www.cnblogs.com/yifengs/p/15182674.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!