【发布时间】:2009-10-27 17:41:04
【问题描述】:
假设我有
std::map< std::string, std::string > m_someMap作为A类的私有成员变量
两个问题:(我问的唯一原因是因为我遇到了这样的代码)
-
这一行的目的是什么:
A::A() : m_someMap()现在我知道这是初始化,但你必须这样做吗? 我很困惑。
std::map< std::string, std::string > m_someMap的默认值是多少,C# 还定义 int、double 等始终初始化为默认 0,对象为 null(至少在大多数情况下) 那么 C++ 中的规则是什么?对象是否由默认为 null 和原语初始化为垃圾? 当然,我正在讨论实例变量。
编辑:
另外,既然大多数人指出这是一种风格选择而不是必要的,那么:
A::A() : m_someMap(), m_someint(0), m_somebool(false)
【问题讨论】:
-
C++ 中的详细默认初始化规则见此:stackoverflow.com/questions/1628311/array-initialisation/…
标签: c++ stl map initialization