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(直接从二进制位进行复制,不安全的转换)

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

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

  • 相关阅读:
    linux远程桌面连接 VNC Server
    linux内核 mtd分区
    STC15控制数码管 38译码器
    DS12C887实时时钟
    printf打印字节调试
    LED 控制卡 单元板 接口引脚定义
    linux守护进程start-stop-daemon启动服务
    相机速率计算
    CodeWarrior IDE烧写介绍
    让 Web 站点崩溃最常见的七大原因
  • 原文地址:https://www.cnblogs.com/asce/p/11234947.html
Copyright © 2011-2022 走看看