带有初始化列表的ctor

https://en.cppreference.com/w/cpp/language/copy_initialization.html

/*
ASM generation compiler returned: 0
Execution build compiler returned: 0
Program returned: 0
2
1
2
*/
struct Dummy {
    Dummy(int a) { cout << "1" << endl;}
    Dummy(initializer_list<int> a) {cout << "2" << endl;}
    Dummy(const Dummy& a) {cout << "3" << endl;}
    Dummy(Dummy&& a) { cout << "4" << endl;}
     Dummy& operator=(const Dummy& a) {cout << "5" << endl; return *this;}
     Dummy& operator=(Dummy&& a) {cout << "6" << endl; return *this;}
    
};


int main (){
    int v = 1;
    Dummy a1{v}; // 列表初始化
    Dummy a3(v); // 函数风格初始化
    Dummy a4 = {v};// 列表初始化, since c++11
}
  • default ctor has higher priority than initializer_list ctor
  • initializer_list ctor has higher prioirty than other ctors
posted @ 2023-04-23 21:32  ijpq  阅读(21)  评论(0)    收藏  举报