C++ C++;我是否需要在默认构造函数中初始化stl字段?

C++ C++;我是否需要在默认构造函数中初始化stl字段?,c++,map,constructor,stl,default,C++,Map,Constructor,Stl,Default,假设我有这样一个类(C++,而不是C++11): 或者,如果我想要一个空映射,我应该让构造函数保持为空吗?您似乎把构造函数主体误认为了空映射。成员初始值设定项列表用于通过调用数据成员和基类的构造函数来实际构造它们。它以冒号开头,后跟一个逗号分隔的构造函数调用列表。例如,要调用my_map上的默认构造函数,可以使用以下语法: A::A() : my_map() { } 初始值设定项列表使用其默认构造函数构造my_map,然后执行构造函数体。如果您有想要以不同方式初始化的数据成员,那么这很有用,但

假设我有这样一个类(C++,而不是C++11):


或者,如果我想要一个空映射,我应该让构造函数保持为空吗?

您似乎把构造函数主体误认为了空映射。成员初始值设定项列表用于通过调用数据成员和基类的构造函数来实际构造它们。它以冒号开头,后跟一个逗号分隔的构造函数调用列表。例如,要调用
my_map
上的默认构造函数,可以使用以下语法:

A::A() : my_map() { }
初始值设定项列表使用其默认构造函数构造
my_map
,然后执行构造函数体。如果您有想要以不同方式初始化的数据成员,那么这很有用,但是如果您的构造函数所做的只是显式调用所有数据成员的默认构造函数,那么它实际上与编译器生成的默认构造函数没有多大的不同


TL;DR:在这种情况下,您不需要编写自己的构造函数,因为编译器将为您提供一个构造函数。

您不需要做任何事情,因为
std::map
有自己的默认构造函数将被调用。除非您想用非默认参数构造
std::map
A::A(){my_map();}
A::A() : my_map() { }