c++ - reinterpret_cast - 整数、枚举、指针或指向成员类型的表达式可以转换为它自己的类型
问题描述
https://en.cppreference.com/w/cpp/language/reinterpret_cast
整数、枚举、指针或指向成员的指针类型的表达式可以转换为它自己的类型。结果值与表达式的值相同。(C++11 起)
为什么我应该对将某些东西转换为自己的类型感兴趣?这对我来说是因为我想将 int 转换为 int。
请纠正我。
解决方案
因为也许你不知道它是否是“它自己的类型”。也许你在一个模板函数中,你正在调用某个函数,你需要它的返回值reinterpret_cast
才能成为模板参数T
。因此,该函数可以返回 type 的值T
。
举一个更有用的例子,假设你得到了一个 type 的对象T
。然后你调用一个应该返回某种指针的函数。而且您想将此指针转换为 achar*
并做一些低级的操作,也许将其传递给memcpy
或其他东西。
那么,如果函数返回 a 会发生什么char*
?也就是说,它返回了一个字符串。你还需要reinterpret_cast<char*>
工作。