C++ 面试题
目录

C++11 中 initializer_list 的用法?

· 约 3 分钟读完 · 第 120 / 181 章

推荐答案

本题详细解读

1. initializer_list 的引入

C++11 引入了 std::initializer_list,它是一个轻量级的容器类模板,用于表示一个初始化列表。initializer_list 通常用于构造函数或函数的参数,以便能够接受一个花括号 {} 包围的初始化列表。

2. initializer_list 的基本用法

initializer_list 可以用于初始化对象或传递给函数。以下是一些常见的用法:

2.1 构造函数中使用 initializer_list

在这个例子中,MyClass 的构造函数接受一个 std::initializer_list<int> 参数,并使用它来初始化对象。

2.2 函数中使用 initializer_list

在这个例子中,printList 函数接受一个 std::initializer_list<int> 参数,并打印列表中的元素。

3. initializer_list 的特点

  • 不可修改:initializer_list 中的元素是只读的,不能通过 initializer_list 修改元素的值。
  • 轻量级:initializer_list 是一个轻量级的容器,它不拥有元素的内存,只是对元素的引用。
  • 自动推导:在使用花括号 {} 初始化时,编译器会自动推导出 initializer_list 的类型。

4. 注意事项

  • initializer_list 的生命周期:initializer_list 的生命周期与它所引用的初始化列表的生命周期相同。如果初始化列表是临时的,那么 initializer_list 的生命周期也是临时的。
  • 避免滥用:虽然 initializer_list 很方便,但不应滥用。对于复杂的初始化逻辑,建议使用其他方式。

通过以上内容,你应该能够理解并掌握 std::initializer_list 在 C++11 中的基本用法和特点。