小编Eun*_*hoi的帖子

当我在普通对象上执行放置新操作时,是否保证保留对象/值表示?

struct A
{
    int x;
}

A t{};
t.x = 5;

new (&t) A;

// is it always safe to assume that t.x is 5?
assert(t.x == 5);
Run Code Online (Sandbox Code Playgroud)

据我所知,当创建类类型的普通对象时,编译器可以省略显式或隐式默认构造函数的调用,因为不需要初始化。(是对的吗?)

那么,如果在一个生命周期已经开始的普通对象上执行放置 new ,是否可以保证保留其对象/值表示?(如果是这样,我想知道在哪里可以找到规范..)

c++ placement-new

7
推荐指数
1
解决办法
468
查看次数

调用约定有何不同?

据我所知,调用约定取决于平台是Windows还是Linux。

我想知道,

  1. 编译器使调用约定不同。
  2. 平台使调用约定有所不同。

哪一个是真的?如果只有 2 为真,则调用约定是由平台定义的,编译器是否只遵循定义的约定?

c++ assembly abi calling-convention

1
推荐指数
1
解决办法
345
查看次数

标签 统计

c++ ×2

abi ×1

assembly ×1

calling-convention ×1

placement-new ×1