1

我想使用新 C++11 中存在的初始化语法对结构进行 ZeroMem。目前我正在这样做:

Mesh::Mesh(void) :
    m_bInitialized(false),
    m_BoundingBox(BoundingBox()), // <-- Is this right???
    m_numVertices(0),
    m_pVertexInfos(nullptr),
    m_pFaceIndices(nullptr),
    m_numFaces(0),
    m_numFacesIndices(0),
    m_materialIndex(0),
    m_faceType(NONE)
{
}

这似乎可以解决问题,但它看起来有点丑陋,感觉不对。有没有更好的办法?

我的印象是,使这种初始化语法如此出色的原因在于,它以某种方式自动初始化了构成该类的内存块,而不会浪费比其他方式更多的 CPU 周期,并且在语法中使用构造函数会破坏该目的。

关于这一点,如果有人可以向我解释是什么让它如此出色,或者将我链接到解释它的文章,我将不胜感激。

谢谢阅读

4

1 回答 1

4

你可以说m_BoundingBox()。这将对成员进行值初始化,这意味着类类型的默认构造和标量类型的零初始化。

于 2013-06-18T19:24:55.753 回答