假设我有
std::map< std::string, std::string > m_someMapA类的私有成员变量
两个问题:(我问的唯一原因是因为我遇到过这样的代码)
这条线的目的是什么:
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)
让我们说:
set<int, less<int> > m_intset;
Run Code Online (Sandbox Code Playgroud)
这是有效的,但现在我将其更改为typedef,我最终得到两行代码:
typedef set<int, less<int> > SetInt;
SetInt m_intset;
Run Code Online (Sandbox Code Playgroud)
这样的优势是typedef什么?我正确使用它吗?