• C++语法小记---类型转换


    类型转换
    • C++类型转换主要包含两种:

      • 隐式类型转换

        • 小类型向大类型转换

          • char -> int

          • short ->int

          • int -> unsigned int

          • int -> float

          • float ->double

      • 显示类型转换

        • const_cast:移除变量的const属性

        • static_cast:完成基础数据类型,同一个继承体系中类型的转换,任意类型与空指针类型void*之间的转换

        • dynamic_cast:使用多态的场景,有继承,有虚函数,向下转型时使用

        • reinterpret_cast:改变指针或引用的类型,不知道用哪一个类型转换就用它

    • 普通类型和类类型之间的转换,类类型之间的转换

      • 转换构造函数:将其他类型转换为类类型

        • 一种特殊的构造函数

        • 只有一个参数

        • 使用explicit就可以限制构造函数的隐式类型转换

      • 类型转换函数:将类类型转换为其它类型

      • 将成员函数作为类型转换函数,如:int toNumber()

      • 当同时定义转换构造函数和类型转换函数时,编译器会报错,处理方法:

        • 一个类定义转换构造函数,一个类定义类类型转换函数,提供两种方式转换,此时编译器报错

        • 声明构造函数为explicit

        • 用型如int toNumber()的成员函数代替类型转换函数

     1 #include <iostream>
     2 #include <string>
     3 
     4 using namespace std;
     5 
     6 class Test
     7 {
     8     int mi;
     9 public:
    10     Test(int i = 0)  //转换构造函数
    11     {
    12         mi = i; 
    13     }
    14     
    15     int toInt() //成员函数作为类型转换函数
    16     {
    17         return mi;
    18     }
    19     
    20     operator int() //类型转换函数
    21     {
    22         return mi;
    23     }
    24 };
    25 
    26 int main()
    27 {   
    28     Test t;
    29     
    30     t = 1; //编译器会隐式调用转换构造函数
    31     
    32     int x = t; //编译器会隐式调用类型转换函数
    33     
    34     int y = t.toInt(); //显式调用成员函数
    35     
    36     return 0;
    37 }
  • 相关阅读:
    换个角度认识大数据(上)——何为元数据
    如何优雅地停止Spark Streaming Job
    split("\,")引起的java.lang.ArrayIndexOutOfBoundsException异常解决方案
    spark streaming整合kafka
    Kafka相关命令
    Hive性能调优(二)----数据倾斜
    Hive SQL编译过程(转)
    Hive性能调优(一)----文件存储格式及压缩方式选择
    Hive表的几种存储格式
    spring框架之javaconfig
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11311113.html
Copyright © 2020-2023  润新知