2013-06-18 73 views
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週期那個目的。

在這個筆記上,如果有人可以向我解釋是什麼讓它如此美好,或者將我鏈接到解釋它的文章,我將不勝感激。

感謝您閱讀

+3

我看到的唯一C++ 11是'nullptr'。你可以在需要放置東西的情況下用'{}'替換'BoundingBox()'。在這裏,你實際上不需要在那裏放置任何東西。 – chris

+1

不要執行過早的優化,C++ **速度很快。**這是怎麼看錯? – 2013-06-18 19:25:12

+1

我不確定它是否是一個新的C++ 11功能,但它顯然不是。考慮到我對C++的更新日誌不熟悉。 – Nico

回答

4

你只能說m_BoundingBox()。這將對該成員進行值初始化,這意味着類類型的default-construct和標量類型的zero-initialize。