如何创建一个用列表初始化的构造函数? [英] How to create a constructor initialized with a list?

查看:49
本文介绍了如何创建一个用列表初始化的构造函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How can I initialize a constructor using a list with n elements?

X x = {4, 5, 6, ...};

推荐答案

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

For a list with n elements you need to use std::initializer_list.

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

Initializer_list objects are automatically constructed as if an array of elements of type T was allocated, with each of the elements in the list being copy-initialized to its corresponding element in the array, using any necessary non-narrowing implicit conversions.

遵循一个示例:

#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;
}

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

For more information about std::initializer_list: http://www.cplusplus.com/reference/initializer_list/initializer_list/

这篇关于如何创建一个用列表初始化的构造函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆