参考:https://www.zhihu.com/question/421767822/answer/1481328334
(从 int *
到int
的转换损失精度)
做了如下测试:
class A { public: A() {} A(const A* pa) { a[0] = pa->a[0]; } int a[8]; }; int main() { A *a = new A(); a->a[0] = 2; printf("a:%ld, %ld\n", a, &a); // auto aa = reinterpret_cast<A>(a); // error // A aa = (A)(a); A aa = static_cast<A>(a); cout<<aa.a[0]<<endl;
auto bb = reinterpret_cast<size_t>(a); // bb是size_t类型
}
类对象指针强转为类对象,需要类里面实现这种转换的构造函数,否则会报错。不过即使实现了这类构造函数也不能用reinterpret_cast,要用static_cast。
可以把指针类型转换为长整型。