gpt4 book ai didi

c++ - reinterpret_cast 是 reinterpret_cast 的唯一有效用法吗?

转载 作者:可可西里 更新时间:2023-11-01 17:08:46 26 4
gpt4 key购买 nike

我最近了解到 C++ 标准包含“严格的别名规则”,它禁止通过不同类型的变量引用相同的内存位置。

但是,该标准确实允许 char 类型合法地别名任何其他类型。这是否意味着 reinterpret_cast 只能合法地用于转换为 char *char & 类型?

我相信严格的别名允许在继承层次结构中的类型之间进行转换,但我认为这些情况倾向于使用 dynamic_cast<>?

谢谢

最佳答案

reinterpret_cast 有许多不同的用途。 cppreference page列出了 11 个不同的案例。

我猜你只是在询问情况 5 和 6:将 T * 转换为 U *,并将 T 转换为 你 &.

在这些情况下,只要不存在对齐冲突,转换就是合法的。仅当您读取或写入生成的表达式时才会出现严格的别名问题。

您在第一段中对严格别名规则的总结过于简单化了,通常 U 有几种合法类型。同一个 cppreference 页面给出了案例的项目符号列表;您可以在 C++ 标准草案中阅读规则的确切文本。

关于c++ - reinterpret_cast<char *> 是 reinterpret_cast 的唯一有效用法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37177545/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com