|
|
1
9
对的。但可能不是你期望的那样。 [expr.static.cast]
没有
不正确。 [intro.object]
明显缺席的是作业。不
后来的
即使在没有上述所有UB的情况下,通过适当使用
|
|
|
2
5
路人的回答涵盖了为什么示例程序有未定义的行为。我将尝试回答如何重用存储
转换指针不会自动将对象显式为存在。必须首先构造浮点对象。 这个
您可以使用placement new返回的指针(在我的示例中被丢弃)直接使用新构造的
许多的
更典型的是重用类型的存储
|
|
|
3
0
我突然进来是因为我觉得至少有一个问题没有回答,没有大声说出来,如果不是真的,我会道歉。我认为这些人很好地回答了这个问题的主要问题:在哪里以及为什么它是未定义的行为;用户2079303很少给出如何解决它的想法。我将尝试回答如何修复代码以及为什么它有效的问题。在开始阅读我的帖子之前,请阅读路人和用户2079303的答案和评论讨论。
对象概念的定义有点复杂,但有意义。这个问题在
proposal Implicit creation of objects for low-level object manipulation
以简化对象模型。在此之前,我们应该通过上述方法显式地创建一个对象。其中一个将工作,在这种情况下是新的布局表达式,新的布局是一个非分配的新表达式,创建一个对象。对于这种特殊情况,这将帮助我们具体说明缺少的数组对象和浮动对象。下面的代码显示了我的想法,包括一些与这些行相关的注释和组装说明(
|
|
|
DutChen18 · 如何在C宏中内联触发隐式指针转换? 1 年前 |
|
|
0xDED · 如何将泛型类强制转换为对象的泛型类? 1 年前 |
|
|
Niclas · 变量>-1如何在C中精确求值? 1 年前 |
|
|
Textime · 将Varchar2转换为时间 2 年前 |
|
|
xpt · Go,无法将类型*int32转换为类型*int64 2 年前 |