type-id 必须是一个指针、引用、算术类型、
函数指针或者
成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针(先把一个指针转换成一个整数,再把该整数转换成原类型的指针,还可以得到原先的指针值)。
操作符修改了
操作数类型,但仅仅是重新解释了给出的对象的比特模型而没有进行
二进制转换。
在进行计算以后, d 包含无用值. 这是因为 reinterpret_cast 仅仅是复制 n 的
比特位到 d, 没有进行必要的分析。
因此, 需要谨慎使用 reinterpret_cast.
reinterpret_cast是为了映射到一个完全不同类型的意思,这个关键词在我们需要把类型映射回原有类型时用到它。我们映射到的类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险的。(这句话是C++编程思想中的原话)
前两个的输出值是相同的,最后一个则会在原基础上偏移4个字节,这是因为
static_cast计算了父子类指针转换的
偏移量,并将之转换到正确的地址(c里面有m_a,m_b,转换为B*指针后指到m_b处),而reinterpret_cast却不会做这一层转换。
因此, 你需要谨慎使用 reinterpret_cast.