任何人都给我一个例子来使用下面的构造函数 int Qt?
QVector::QVector(std::initializer_list<T> args);
任何人都给我一个例子来使用下面的构造函数 int Qt?
QVector::QVector(std::initializer_list<T> args);
std::initializer_list
当您使用列表初始化时,会考虑采用一个构造函数。这是一个涉及括号初始化列表的初始化:
QVector<int> v{1, 2, 3, 4, 5};
// or equivalently
QVector<int> v = {1, 2, 3, 4, 5};
请注意,这是一个 C++11 功能。事实上,第一种语法对 C++11 来说是新的,而第二种可能在 C++03 中用于聚合初始化。
您还可以使用直接初始化并将初始化列表作为参数传递:
QVector<int> v({1, 2, 3, 4, 5});
由于构造函数不是explicit
,它还可以用于其他一些有趣的方式:
传递QVector
参数:
void foo(QVector<int>);
foo({1, 2, 3, 4, 5});
返回一个QVector
:
QVector<int> bar()
{
return {1, 2, 3, 4, 5};
}
§8.5.4 列表初始化 [dcl.init.list]:
一个构造函数是一个初始化列表构造函数,如果它的第一个参数是类型
std::initializer_list<E>
或引用可能 cv-qualifiedstd::initializer_list<E>
for some typeE
,并且要么没有其他参数,要么所有其他参数都有默认参数(8.3.6)。
§13.3.1.7 通过列表初始化 [over.match.list] 进行初始化:
当非聚合类类型的对象
T
被列表初始化(8.5.4)时,重载决议分两个阶段选择构造函数:
最初,候选函数是类的初始化列表构造函数(8.5.4),
T
参数列表由初始化列表作为单个参数组成。[...]