(5.2.9 / 10)类型“指向cv1 void的指针”的右值可以转换为“指向cv2 T的指针”的右值,其中T是对象类型,cv2与cv-qualified相同或更高cv-qualification比cv1。 转换为“指向cv void的指针”并返回原始指针类型的对象的类型指针值将具有其原始值。

因为,从void*转换的结果是int* (原始指针类型)所以,是什么让以下转换有效?

int i = 10;
double *pd_2 = static_cast<double*>(static_cast<void*>(&i));

===============>>#1 票数:2

演员阵容没有明确定义。

  ask by user1086635 translate from so

未解决问题?本站智能推荐:

1回复

reinterpret_cast / static_cast和未定义的行为

在一个变体类中,我正在处理原始存储是一个char数组: 赋值运算符类似于: 获取存储对象的代码是: 它似乎工作,但它总是很好定义? 我担心安全地解除引用指针(类型别名规则允许它吗?)。 当前的实施和之间是否存在任何差异 相关问题/答案: https
1回复

是否滥用了static_cast?

我对static_cast有不同的感觉,因为它是最安全的C ++ static_cast转换,但同时允许安全和不安全的转换,因此您必须知道上下文以说出它是否确实安全或可能导致UB(例如,何时转换为子类)。 那么为什么没有更安全的显式演员表呢? 这是一个有用的示例。 在COM中,它们必须
5回复

关于static_cast的问题

我写了一段代码,但我对它的输出感到困惑: 输出是: 但据我所知, pb指向类型B.并且没有名为disp()函数? 那么,为什么它可以访问D类中的disp()函数呢?
2回复

for循环中的static_cast

我知道静态类型转换是在编译时处理的,但是在for循环的条件下静态类型转换又如何呢? 会在每次迭代时进行转换,还是在编译过程中仅进行一次转换? 我担心此实施的成本。 我知道编译器会自动强制类型转换,我只是想删除警告。 例如: 警告是:“从'double'转换为'int'可能会改变其
1回复

static_cast的奇怪用法

我在生产环境中查看了以下代码构造(但是经过了大大简化)。 现在不考虑它的明显混淆的性质,因为它只是确定数组长度的旧C方法...我真的为0值的static_cast感到困扰。 ...此代码可以接受吗? 您能否在响应中附上C ++标准的某些段落,以告诉我(如果)为什么此代码还行?
1回复

static_cast的神秘行为

我正在尝试实现一类数字矢量。 我正在使用Qt模板QVector,它类似于STL向量 令我困惑的是那件事 根本不起作用。 我尝试逐行调试它,并且根本没有调用VectorFloat :: operator <<。 没有错误,程序编译并运行,但什么都不做。 但这有效
2回复

CGAL static_cast失败

对于我的论文,我使用的是一年前另一位学生编写的一些CGAL代码。 但是,我无法构建它。 给出错误的函数如下: 与线curves.emplace(static_cast<Curve_handle>(curve)); 出现以下错误: 用户定义的类型(例如Curv
3回复

了解static_cast

我在理解下面的代码时遇到了一些问题。 为什么我可以调用c()函数? 输出是:
2回复

嵌套的static_cast和const_cast

我有一个类似下面的系统调用: 我写了以下两个函数: 我不喜欢static_cast嵌套的const_cast ,有没有办法在一步中执行从const void*到unsigned char*的转换?
4回复

static_cast和RTTI vs dynamic_cast

请遵守以下代码。 据我所知,dynamic_cast比static_cast慢。 因为它在运行时评估类型。 我在这里的疑问是,如果我们将static_cast与typeid()一起使用如下,它是否需要与动态强制转换相同的时间? 它会比dynamic_cast快吗? 使用RTTI进