Bất cứ ai cho tôi một ví dụ để sử dụng hàm tạo sau int Qt?Bất cứ ai cũng cho tôi một ví dụ để sử dụng QVector :: QVector (std :: initializer_list <T> args)?
QVector::QVector(std::initializer_list<T> args);
Bất cứ ai cho tôi một ví dụ để sử dụng hàm tạo sau int Qt?Bất cứ ai cũng cho tôi một ví dụ để sử dụng QVector :: QVector (std :: initializer_list <T> args)?
QVector::QVector(std::initializer_list<T> args);
Một hàm tạo cần std::initializer_list
được xem xét khi bạn sử dụng khởi tạo danh sách. Đó là quá trình khởi tạo liên quan đến danh sách khởi chạy được tăng tốc:
QVector<int> v{1, 2, 3, 4, 5};
// or equivalently
QVector<int> v = {1, 2, 3, 4, 5};
Lưu ý rằng đây là tính năng C++ 11. Trong thực tế, cú pháp đầu tiên là mới đối với C++ 11, trong khi cú pháp thứ hai có thể đã được sử dụng trong C++ 03 để khởi tạo tổng hợp.
Bạn cũng có thể sử dụng trực tiếp khởi tạo và vượt qua danh sách initializer như là đối số:
QVector<int> v({1, 2, 3, 4, 5});
Kể từ khi các nhà xây dựng không phải là explicit
, nó cũng có thể được sử dụng trong một số cách thú vị khác:
Vượt qua một đối số QVector
:
void foo(QVector<int>);
foo({1, 2, 3, 4, 5});
Trả về một QVector
:
QVector<int> bar()
{
return {1, 2, 3, 4, 5};
}
§8.5.4 List-khởi [dcl.init.list]:
Một constructor là một initializer-list constructor nếu tham số đầu tiên của nó là loại
std::initializer_list<E>
hoặc tham chiếu đến có thể đủ điều kiện cvstd::initializer_list<E>
đối với một số loạiE
và ở đó không có tham số khác hoặc các tham số khác có đối số mặc định (8.3.6).
§13.3.1.7 Khởi tạo bởi danh-khởi [over.match.list]:
Khi đối tượng của phi tổng hợp lớp loại
T
là danh sách khởi tạo (8.5.4), độ phân giải quá tải lựa chọn các nhà xây dựng trong hai giai đoạn:
Ban đầu, các chức năng ứng cử viên là các nhà thầu initializer-list (8.5.4) của lớp
T
và danh sách đối số bao gồm các danh sách initializer như một đối số duy nhất.[...]
Nếu một hàm có một QVector lập luận như 'Fun (QVector)', có thể gọi nó như 'Fun (QVector {1,2})' ? Cảm ơn. –
user1899020
@ user1899020 Có, bạn có thể. Trong thực tế, hàm tạo này của 'QVector' không phải là' tường minh', vì vậy bạn thậm chí có thể làm 'Fun ({1, 2, 3})'. –
'QVector v {1, 2, 3, 4, 5}' thậm chí không cần '()' như 'QVector v ({1, 2, 3, 4, 5})'.Nếu tôi thêm(), tôi nghĩ nó cũng sẽ hoạt động. Đúng? –
user1899020