如果我這樣做:的std :: initializer_list和=操作
MyClass a=b;
它使用拷貝構造函數初始化a
,並且=
運算符重載不參與,對不對?
如果a
已經初始化,然後我將其分配給其他東西,則將使用=
運算符。
我看到this:
S(std::initializer_list<T> l) : v(l) {
使用,如:
S<int> s = {1, 2, 3, 4, 5}; // direct list-initialization
這很有趣。它是初始化,它使用=
運算符,但它調用的不是複製構造函數的構造函數。它爲何不拿,而不是語法是這樣的:
S<int> s {1, 2, 3, 4, 5};
那怎麼std::vector
constructor與std::initializer_list
作品。使用=
運算符來初始化一個對象,當該運算符沒有調用複製構造時,看起來很混亂,不是嗎?
[測試](http://coliru.stacked-crooked.com/view?id=32e42256c131b9f31d69b59d16ccecbf-50d9cfc8a1d350e7409e81e87c2653ba) –