小编Tom*_*Tom的帖子

我什么时候必须使用初始化列表来初始化C++类成员?

假设我有 std::map< std::string, std::string > m_someMapA类的私有成员变量

两个问题:(我问的唯一原因是因为我遇到过这样的代码)

  1. 这条线的目的是什么:

    A::A() : m_someMap()
    
    Run Code Online (Sandbox Code Playgroud)

    现在我知道这是初始化,但你必须这样做吗?我糊涂了.

  2. 什么是默认值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)

c++ stl initialization map

5
推荐指数
1
解决办法
3484
查看次数

为什么我应该在C++中使用typedef?

让我们说:

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什么?我正确使用它吗?

c++ typedef

4
推荐指数
2
解决办法
2354
查看次数

标签 统计

c++ ×2

initialization ×1

map ×1

stl ×1

typedef ×1