次のコンストラクタintQtを使用する例を教えてください。
QVector::QVector(std::initializer_list<T> args);
次のコンストラクタintQtを使用する例を教えてください。
QVector::QVector(std::initializer_list<T> args);
std::initializer_list
list-initializationを使用する場合は、をとるコンストラクターが考慮されます。これは、中括弧で囲まれた初期化リストを含む初期化です。
QVector<int> v{1, 2, 3, 4, 5};
// or equivalently
QVector<int> v = {1, 2, 3, 4, 5};
これはC++11の機能であることに注意してください。実際、最初の構文はC ++ 11の新機能ですが、2番目の構文は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]:
コンストラクターは、最初のパラメーターがタイプであるか、あるタイプのcv修飾を参照している場合、および他のパラメーターがないか、他のすべてのパラメーターにデフォルトの引数(8.3.6)がある場合、初期化子リストコンストラクターです。
std::initializer_list<E>
std::initializer_list<E>
E
§13.3.1.7list-initialization[over.match.list]による初期化:
非集約クラスタイプのオブジェクト
T
がリスト初期化(8.5.4)される場合、オーバーロード解決は2つのフェーズでコンストラクターを選択します。
最初、候補関数はクラスの初期化子リストコンストラクター(8.5.4)で
T
あり、引数リストは単一の引数としての初期化子リストで構成されます。[...]