任何人都给我一个例子来使用以下构造函数int Qt?
QVector::QVector(std::initializer_list<T> args);
答案 0 :(得分:11)
使用列表初始化时会考虑使用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>
,或者对某些类型std::initializer_list<E>
可能引用cv限定E
,并且没有其他参数,或者所有其他参数都有默认参数(8.3.6)。
§13.3.1.7通过list-initialization [over.match.list]进行初始化:
当非聚合类类型
T
的对象被列表初始化(8.5.4)时,重载决策分两个阶段选择构造函数:
最初,候选函数是类
T
的初始化列表构造函数(8.5.4),参数列表由初始化列表作为单个参数组成。[...]