Tom*_*Tom 5 c++ stl initialization map
假设我有
std::map< std::string, std::string > m_someMap
A类的私有成员变量
两个问题:(我问的唯一原因是因为我遇到过这样的代码)
这条线的目的是什么:
A::A() : m_someMap()
Run Code Online (Sandbox Code Playgroud)
现在我知道这是初始化,但你必须这样做吗?我糊涂了.
什么是默认值std::map< std::string, std::string > m_someMap
,C#还定义int,double等始终初始化为defualt 0且对象为null(至少在大多数情况下)那么C++中的规则是什么?是对象初始化为defualt为null和原语为垃圾?当然我正在考虑实例变量.
编辑:
另外,既然大多数人都指出这是一种风格选择而不是必要的,那么:
A :: A():m_someMap(),m_someint(0),m_somebool(false)
Dan*_*nas 12
m_somemap
std::map< std::string, std::string >
,即该地图的有效实例,其中没有元素.m_somebool
true
或者false
如果您希望它具有已知值.布尔值是"普通的旧数据类型",它们没有构造函数的概念.此外,C++语言没有为非显式初始化的布尔值指定默认值.m_someint