zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    jQuery动态效果
    10.嗖嗖移动业务大厅
    10.IDEAD 的xml中配置DTD
    浏览器缓存相关的Http头介绍:Expires,Cache-Control,Last-Modified,ETag
    nginx 重启
    fiddler 路由设置
    JavaScript Source Map 详解
    xdebug.var_display_max_data
    PHP输出当前进程所有变量 / 常量 / 模块 / 函数 / 类
    PHP中文件包含的路径问题
  • 原文地址:https://www.cnblogs.com/chusiyong/p/11311113.html
Copyright © 2011-2022 走看看