【发布时间】:2021-09-09 05:15:26
【问题描述】:
鉴于以下条件:
struct A
{
int a;
};
struct B
{
int b;
};
int main()
{
A a {1};
A* p = &a;
使用static_cast 和reinterpret_cast 通过void* 进行投射是否会产生相同的结果?即以下表达式之间有什么区别?
static_cast <A*> ( static_cast <void*> (p) );
reinterpret_cast <A*> ( reinterpret_cast <void*> (p) );
如果我们使用static_cast 和reinterpret_cast 将指向一个类的指针转换为指向另一类的指针会怎样?这两个运营商有什么区别吗?以下表达式是否相同?
static_cast <B*> ( static_cast <void*> (p) );
reinterpret_cast <B*> ( reinterpret_cast <void*> (p) );
reinterpret_cast <B*> ( p );
我可以在这之后使用B* 指针来访问b 成员吗?
【问题讨论】:
标签: c++ reinterpret-cast static-cast