是的,这不是很便携,我想知道为什么有人会想要做这样的事情:`
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/