c++ - reinterpret_cast - 整数、枚举、指针或成员指针类型的表达式可以转换为它自己的类型

标签 c++ c++11

https://en.cppreference.com/w/cpp/language/reinterpret_cast

An expression of integral, enumeration, pointer, or pointer-to-member type can be converted to its own type. The resulting value is the same as the value of expression. (since C++11)

为什么我应该对将某些东西转换成它自己的类型感兴趣?这对我来说就像我想将 int 转换为 int。

请指正。

最佳答案

因为也许你不知道它是不是“它自己的类型”。也许你在一个模板函数中,你正在调用一些函数,你需要它的返回值是 reinterpret_cast能够使用模板参数 T .所以该函数返回类型为 T 的值是可以的.

举一个更有用的例子,假设给你一些类型为 T 的对象.然后你调用一个应该返回某种指针的函数。并且您想将此指针转换为 char*并做一些低级别的困惑,也许将其传递给 memcpy什么的。

好吧,如果函数返回 char* 会发生什么? ?也就是说,它返回了一个字符串。你需要reinterpret_cast<char*>继续工作。

关于c++ - reinterpret_cast - 整数、枚举、指针或成员指针类型的表达式可以转换为它自己的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63635285/

相关文章:

c++11 - C++11 中返回本地值的最佳方式

c++ - vector 作为类成员

c++ - 标准说在发现未知属性时实现应该做什么?

c++ - 为什么使用默认构造函数构造的对象的 `sizeof` 总是得到 1?

c++ - 我可以从不同的线程调用 socket send() 吗?

C++11:在 push_back()、clear() 之后,vector.size() 不会在 Eclipse 调试观察器中更新

c++ - std::for_each() 和调用构造函数/析构函数

c++模板来更改函数的constness

c# - Vista/Windows 7 中字幕的透明度

c++ - 如何在 Visual Studio 中使用 C++11 线程