zoukankan      html  css  js  c++  java
  • C++ 各类型转换及关键字

      volatile关键字

      表示该变量易变,每次在访问该关键字修饰的变量时都要读内存,不对其进行优化。

      mutable关键字

      类的常成员函数在语义上是不允许修改类的成员变量的,但是有时候可能根据代码的需要并不是这么绝对。那么就可以使用mutable声明一个类的成员变量,它告诉编译器类的常成员函数可以修改这个变量。

      explicit关键字

      修饰构造函数,通常用作 构造函数静止隐式转换。

      四种类型转换

      1. const_cast

      去掉类型的const或volatile属性。

    const int a=10;
    int &b=const_case<int&>(a);

      2. static_cast

      静态类型转换,用于类型间强制转换。用于:

      (1)基类和子类转换,子类指针转父类是安全的,父类转子类不安全。

      (2)基本数据类型转换。

      (3)空指针转换成目标类型指针。

      (4)转换为void类型

    int n=1;
    double  d=static_cast<double>(n);
    int *pn=&n;
    double *d=static_cast<double*>(&n);
    void *p = static_case<void*>(pn);

      

      3.dynamic_cast

      动态类型转换,运行时类型安全检查(转换失败返回NULL)

      1.安全基类和子类转换,基类转子类会失败。

      2.必须有虚函数。

      3.相同基类不同子类间转换,结果为NULL。

       4.reinterpret_cast

      重新解释类型,没有进行二进制转换。

      一般用在函数指针类型之间转换。

  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/wshr007/p/11505658.html
Copyright © 2011-2022 走看看