有人可以解释我如何在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