zoukankan      html  css  js  c++  java
  • C++中类型强制转换

    C++中强制类型转换有四种:

    1.static_cast

    格式:static_cast<Type>(Value);

    --用于基本类型间的转换,但不能用于基本类型指针间的转换;

    int i = 0;
    char c = 'C';
    int *pi = &i;
    char *pc = &c; c = static_cast<char>(i); //没问题,将i转换为char型
    pc = static_cast<char*>(pi); //不可以,不能用于指针间转换

    --用于有继承关系类对象之间的转换和类指针之间的转换;

    --static_cast是编译期进行转换的,无法在运行时检测类型,所以类类型之间的转换可能存在风险;

    2.const_cast

    --用于去除变量的const属性;

    const int& j = 1;  
    int& k = const_cast<int&>(j);  //将只读变量j去除const属性
    k = 5;
    
    const int x = 2;
    int& y = const_cast<int&>(x);
    y = 3;
    
    printf("x = %d",x);  //打印出来为2,因为编译到上面时已经将x = 2的值送进符号表
    printf("y = %d",y);  //打印出来为3,此时x和y的地址相同

    3.dynamic_cast

    --主要用于类层次间的转换,还可以用于类之间的交叉转换;

    --dynamic_cast具有类型检查的功能,比static_cast更安全;

    4.reinterpret_cast(直接从二进制位进行复制,不安全的转换)

    --用于指针类型间的强制转换;

    --用于整数和指针类型间的强制转换;

  • 相关阅读:
    获取url中的参数
    css 实现单行以及多行文本溢出显示省略号
    页面跳转不带 referrer的方法
    iframe加载完成事件
    es6模块化规则(一)
    kindle电子书下载网站收藏
    vue多页面项目配置
    使用原生ajax及其简单封装
    在vue中使用jq或者第三方插件
    写博客常用语法
  • 原文地址:https://www.cnblogs.com/asce/p/11234947.html
Copyright © 2011-2022 走看看