c++ - 这是什么意思 reinterpret_cast<char *&>(a) = cp;

标签 c++ casting

是的,这不是很便携,我想知道为什么有人会想要做这样的事情:`

char *cp ;
reinterpret_cast<char *&>(a) = cp;

` 是什么意思?

谢谢

最佳答案

a被转换为 char*& .它叫做reinterpret_cast因为这些位完全按照转换目标类型所要求的方式重新解释。编译器不检查有效性(他也不能)。这将指针带回了它的起源:它只是一段内存的地址。

原因a被强制转换为对指针的引用是需要引用才能具有有效的左值来分配 cp到。 reinterpret_cast<char *>(a) = cp将是非法的,因为您不能分配给临时对象。

源代码看起来有点难看。这个:

char* c = reinterpret_cast<char*>(a);
c = cp;

可能更易于维护和阅读,尽管它更长(注意它的含义并不完全相同,因为我们引入了一个额外的变量 c 来保存转换的结果。在原始示例中,a ' s 内存被重用以指向新位置 cp )。

关于c++ - 这是什么意思 reinterpret_cast<char *&>(a) = cp;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2134711/

相关文章:

C++整型常量表达式定义

java - 如何在java中使用常用的括号进行动态转换?

c++ - 将 2D char* 数组传递给函数时出错

c++ - IDirect3DDevice9::EndScene Hook 有时会在参数 IDirect3DDevice9 中得到 NULL

c++ - 无法调整缓冲区以适应数据

java修剪通用数组

在包含指向不同类型的指针的结构之间转换结构指针?

c++ - 共享指针的C++ vector 。如果将其强制转换为 vector ,它将改变 vector 中的指针吗?

c++ - 如何将 const void* 转换为 unsigned int?

c++ - 试图做这个家庭作业,但我不断收到编译错误