【发布时间】:2009-07-14 15:18:25
【问题描述】:
如果我使用placement new 初始化一个POD 类,我可以假设内存将被默认初始化(为零)吗? This resource 明确指出,如果您显式调用零参数默认构造函数,则字段将被默认初始化,但尚不清楚使用placement new 的默认实现(传递地址)是否会成立。在这种情况下,将内存归零是标准行为吗?
【问题讨论】:
-
该文档已过时。在 '03 标准修订版中,
new T();用于 POD 和没有用户声明的构造函数的非 POD 值初始化,而不是默认初始化。你会发现 C++ 中的初始化是一团糟。我希望 SO 有桌子支持 -
呃...我明白你在说什么。我刚刚发现了这个错误:qc.embarcadero.com/wc/qcmain.aspx?d=51854 不过,我读的越多,它似乎越应该被零初始化..
标签: c++ placement-new