有人可以解釋我如何在c + +中的內存分配和初始化工作?沒有構造函數的C++類成員初始化
File Test.h
-----------
class Test
{
public:
Test();
void clearSet();
private:
std::set<std::string> m_SetStringMember;
int m_initMe;
}
File Test.cpp
-------------
Test::Test():m_initMe(0)
{}
Test::clearSet()
{
m_SetStringMember.clear();
}
什麼我不明白的是:
的int
件m_initMe
是正確初始化在構造函數中,因此在內存的有效ADRESS和有效值。
但m_SetStringMember
會發生什麼情況?
它是否必須在內存中有一個有效的地址?
它是否必須具有有效的默認值?
由std::set<std::string>()
的默認構造函數設置?
或者我必須在構造函數中明確設置m_SetStringMember = std::set<std::string>()
?
它具有不確定的價值。同樣的事情適用於'm_SetStringMember',但它通過默認的構造函數調用,它會給它一個有效的狀態。 – 2013-05-02 09:15:25