如何正确使用初始化语法来初始化结构?

时间:2013-06-18 19:23:19

标签: c++ constructor initialization

我想使用新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周期,而在语法中使用构造函数会失败目的

就此而言,如果有人可以向我解释是什么让它变得如此美好,或者将我链接到解释它的文章,我将不胜感激。

感谢您阅读

1 个答案:

答案 0 :(得分:4)

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

相关问题