C++语言

  1. 隐式类型转换、

    1. 系统自动进行、
  2. 显示类型转换、(强制类型转换)

    1. C语言中的两种强制类型转换、

      1. int a=5%(int)3.2

      2. int a = 5% int (3.2)

      3. 以上两个方法均可以将浮点型强制转换 为int型、但是会丢失精度、

      4. C++中有四种转换强制转换、目的是提供更丰富的含义和功能、

        1. static_cast、

          1. 静态转换、编译时进行类型转换检查、

          2. 相关类型风格转换、

          3. double a = 2.32;
               	int b = (int)a;//C语言的转换方式、
               	int c = static_cast<int>(a);//C	++的强制转换
            
          4. 整型转实性、

          5. 子类转父类、

          6. void*(无类型指针、可以指向任何指针类型)与其他类型指针、类型之间转换、

        2. dynamic_cast、

          1. 常用于运行时类型识别和检查、主要用来父类型于子类型之间转换的、(父类型指针指向子类型转)、
          2. 这四种强制类型转换中唯一在运行时进行转换的、其余均是在编译时转换、
        3. const_cast、

          1. 去除指针和const属性、将const性质强制转换掉(去除掉)、

          2. 编译时进行类型转换、

          3. const int a = 10;
            	const int* b = &a;
            	int* c = const_cast<int*>(b);
            	*c = 20;//写值行为、属于未定义行为、结果会不确定、
            	cout << a << endl;
            	cout << *b << endl;
            
          4. 功能单一、只能去除指针及其const属性、

        4. reinterpret_cast、

          1. 重新解释、将操作内容解释为另一种不同的类型、将操作数的类型转换、

          2. 处理无关类型的转换、两个转换类型之间没有任何关系、

          3. 常用于、将一个整形(地址)转成指针、一种类型的指针转换成另一种类型的指针、按照转换后的类型重新解释内存内的内容、

          4. int a = 6;
            	int* b = &a;
            	int* c = reinterpret_cast<int*>(b);
            	char* d = reinterpret_cast<char*>(b);
            
            
        5. 可以将2字节转换为4字节或者8字节、当然也可以让8字节或者其它字节转换为别的字节、8转2或4均可、

      5. 以上四个均成为命名的强制类型转换、

      6. 通用形式、

        1. 强制类型转换名(即以上4个命名)<转换目标类型>(要转换的值);

          1. 类型转换就是为了让编译器不报错而存在的
    2. 总结、

      1. 类型转换少用因为会干扰系统的类型检查、
posted on 2020-10-03 11:38  程耀辉  阅读(140)  评论(0编辑  收藏  举报