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 ,是否可以保证保留其对象/值表示?(如果是这样,我想知道在哪里可以找到规范..)
据我所知,调用约定取决于平台是Windows还是Linux。
我想知道,
哪一个是真的?如果只有 2 为真,则调用约定是由平台定义的,编译器是否只遵循定义的约定?