C++11引入了一项新功能:初始化列表。在C++98中,我们可以使用以下两种方法进行初始化:
int i = 0;
int j(0);
引入“初始化列表”后,我们可以这样进行初始化:
int i = {
0};
int j{
0};
上述代码体现不出“初始化列表”的优越来,别着急,我们还可以这样用:
std::vector<int> v{ 1, 2, 3, 4 };
std::map<int, float> m = { {
1, 1.0f}, {
2, 2.0f}, {
3, 3.0f} };
是不是方便多了?
自定义类型
自定义类型也可以使用初始化列表。假设我们有自定义类:
class Players
{
public:
// 默认构造函数
Players()
{}
// 单参构造函数
Players(int a)
{
m_vec.push_back(a);
}
// 双参构造函数
Players(int a, int b)
{
m_vec.push_back(a);
m_vec.push_back(b);
}
// 双参构造函数
Players(int a, const char* b)
{
m_vec.push_back(a);
}
// 拷贝构造函数
Players(con