• 类类型转换(转换构造函数 & 类型转换运算符)


     

     

     

     

     

     

    只有一个参数的构造函数可以作为转换构造函数,默认情况下会发生隐式转换,但是如果你对转换构造函数加上了关键字explicit,它就不允许隐式转换,但是你可以通过static_cast等进行强制转换。

    而且只允许一步类类型转换,什么意思呢?

    比如一个类Str,它有一个构造函数,这个构造函数只需要一个参数,且这个参数类型为string,那么你不可以通过Str s = “qwe”来利用一个临时Str对象初始化s,因为这个临时对象需要两步转换才可以成为Str

    第一步:把“qwe”变成string类型

    第二步:把string类型通过转换构造函数变成Str类型

    Str s = string(“qwe”)——这个就可以

    这个说明白了,我们再说一下类型转换运算符

    比如说你在类Str中定义了一个这个类型转换成int类型的类型转换函数,然后默认下如果在下面这种情况下:

    Str s;

    int b;

    int a = s+b;

    s就会隐式转换成int类型进行运算(也可以对它使用explicit来禁止其隐式转换)

    类型转换运算符形式:

    operator type() const; //type可以是int、double、bool这些类型。不允许有形参,返回值类型为type

     

     

     

     

     

     

     

  • 相关阅读:
    不错的前端特效
    查询世界城市维度、经度
    echarts 省市区县geoJson获取
    Echarts世界地图中国分区显示
    全国主要城市空气质量
    Echarts世界地图中国分区显示与获取具体城市的geojson
    md编辑器typora
    PHP基础之数组方法
    PHP封装 冒泡排序算法
    PHP基础之日期和时间管理
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/15108523.html
Copyright © 2020-2023  润新知