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://www.cnblogs.com/Stephen-Qin/p/12815407.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    C++中的static_cast,const_cast,dynamic_cast和reinterpret_cast

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/345534

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月2日 上午3:18
下一篇 2023年3月2日 上午3:19

相关推荐