如何创建用列表初始化的构造函数?

use*_*997 3 c++ constructor list c++11

如何使用包含n个元素的列表初始化构造函数?

X x = {4, 5, 6, ...};
Run Code Online (Sandbox Code Playgroud)

Ale*_*lex 7

对于包含n个元素的列表,您需要使用std :: initializer_list.

自动构造Initializer_list对象,就像分配了类型为T的元素数组一样,使用任何必要的非缩小隐式转换将列表中的每个元素复制初始化为其对应的元素.

举个例子:

#include <iostream>
#include <initializer_list>
#include <vector>

template<class T>
class X {
  long unsigned int size;
  std::vector<T> _elem;
public:
  X(std::initializer_list<T> l): size{l.size()} {
    for(auto x: l)
      _elem.push_back(x);
  }

  void print() {
    for(auto x: _elem)
      std::cout << x << " ";
  }
};

int main(int argc, char **argv) {
  X<int> x = {4, 5, 10 ,8 ,6};
  x.print();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

有关std :: initializer_list的更多信息:http: //www.cplusplus.com/reference/initializer_list/initializer_list/