为什么为什么当其他构造函数存在时,“ctor()= default”更改行为?
struct wrapper
{
explicit wrapper(void *);
wrapper() = default;
int v;
};
int main() { return wrapper().v; } // You should run this in Debug mode
回报0xCCCCCCCC
,而
struct wrapper { wrapper() = default; int v; };
int main() { return wrapper().v; }
和
struct wrapper { int v; };
int main() { return wrapper().v; }
都返回0
?
当您添加非默认构造函数时,类型不再是聚合。我相信这是在玩这个,不知道如何。无论如何,我怀疑你保证它是0。 –
@RyanHaining:你确定吗?如果是这样的话,这似乎很奇怪,因为这意味着只有当你没有其他构造函数时才可以使用'= default',这似乎毫无意义...... – Mehrdad
'= default'将返回默认的构造函数,但在这两种情况下'v'都是非空间化的。有了gcc,即使在第一种情况下,我也能得到0,但这只是偶然。 –