zoukankan      html  css  js  c++  java
  • C++中的static_cast,const_cast,dynamic_cast和reinterpret_cast

    总结下cast的套路:

     TypeA a = xxx_cast<TypeA>(b); 

    操作符 作用 C++中对应的例子 C中对应的例子
    static_cast 编译器隐式执行的任何类型转换都可以通过它来显式完成.
    double d = 1.1;
    char ch = static_cast<char>(d);
    char ch = d;
    dynamic_cast

    将基类指针或者引用转化为其继承层次中的其他类型的指针或者引用

    更多见:https://www.cnblogs.com/Stephen-Qin/p/12820458.html

     if(Derived *pDerived = dynamic_cast<Derived *>(pBase))//把基类的动态性给cast掉

    {

    //use pDerived

    }

    else

    {

    //use pBase

    }

     无
    const_cast 去掉类型的const属性

    const char * pc_str;

    char * p = const_cast<char *>(pc_str);

    char *p = (char *)pc_str;
    reinterpret_cast 对类型进行重新解释,通常用于和指针类型有关的转换

    例子1:

    Date *pd = new Date();

    cout << "address" << reinterpret_cast<int>(pd);

    //等价于直接打印pd,只不过直接打印是16进制;这里是10进制打印.(还不清楚这样打印有啥好处)

    例子2:

    int *ip;

    char *pc = reinterpret_cast<char *>(ip);

    string str(pc);

    //发生了类型转换,把一个四字节的变量让一个指向一字节的指针给指向了,会存在问题.比如ip指向的数大于255时,pc中得到的值只能是它最低的一个字节的内容.(作者利用str表示的意图没有理解,待以后完善)

    char *pc = (char *)ip;
    新战场:https://blog.csdn.net/Stephen___Qin
  • 相关阅读:
    mustache.js 使用
    iscroll4 input textarea不能获得焦点问题
    object-fit?
    window.open()被拦截问题
    JSONP
    mouseenter和mouseover的区别
    前端页面卡顿-代码优化
    如何设置html中img宽高相同-css
    iscroll使用之页面卡顿问题
    iScroll的简单使用
  • 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12815407.html
Copyright © 2011-2022 走看看