reinterpret_cast和static_cast的区别
发布日期:2021-05-08 05:11:49 浏览次数:20 分类:精选文章

本文共 388 字,大约阅读时间需要 1 分钟。

class A {       public:    long m_a;}; class B {       public:    long m_b;}; class C : public A, public B {   };int main() {       C c;    printf("%p, %p, %p", &c, reinterpret_cast
(&c), static_cast
(&c)); }

前两个的输出值是相同的,最后一个在原基础上偏移8个字节,这是因为static_cast计算了父子类指针转换的偏移量,并将之转换到正确的地址(c里面有m_a,m_b,转换为B*指针后指到m_b处),而reinterpret_cast却不会做这一层转换。如果把long换成int或者float,偏移量就变成8。

上一篇:关于cmake中CMP0074变量设置
下一篇:Texmaker中使用.bib文件生成参考文献

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月06日 05时58分43秒