zoukankan      html  css  js  c++  java
  • C/C++ cast

    类型转换:
    因为要覆盖通常的标准转换,所以需显式使用强制类型转换。
    显式使用强制类型转换的另一个原因是:可能存在多种转换时,需要选择一
    种特定的类型转换。我们将在第 14 章中详细讨论这种情况。

    命名的强制类型转换符号的一般形式如下:
    cast-name<type>(expression);
    其中 cast-name 为 static_cast、dynamic_cast、const_cast 和reinterpret_cast
    int rst=10;
    double b=10.23;
    rst*=static_cast<int>(b);//为了防止把rst转换为double这个不必要转换

    static_cast
    可以执行指针到指针的转换,或实例本身到实例本身的转换,但不能在实例和指针之间转换。
    或者类型没有提供对应转换也会出错
    编译器隐式执行的任何类型转换都可以由 static_cast 显式完成。

    dynamic_cast
    dynamic_cast 支持运行时识别指针或引用所指向的对象。

    const_cast
    //应用:比如一个函数接受char*,但是只读不写,希望也能够接受const char* 类型,但是不能修改函数
    const char* p1="1111";
    char* p2=const_cast<char*>(p1); //p2和p1实际内容一样,虽然不是const,但是修改会出错


    reinterpret_cast
    通常为操作数的位模式提供较低层次的重新解释。 就是和int a=(int)b一样的效果,可以任意转换,但不保证安全,如果有错误要在运行时才能产生

  • 相关阅读:
    poj1580
    poj1607
    poj1313
    poj1314
    c语言之extern和static
    C笔记(一)
    搭建Linux高可用性集群(第一天)
    利用回调函数实现泛型算法
    关于SQL server中的 identity
    SQL(一)
  • 原文地址:https://www.cnblogs.com/FlyCat/p/2817605.html
Copyright © 2011-2022 走看看