如何使 C++ 中的构造函数接受无限参数?

ugo*_*eto 1 c++ overloading class list instance

我出于std::list教育目的重新实现。

我想知道是否有一种方法可以允许用户使用此语法进行初始化:

my::list l = {1, 2, 3, 4, 5};
Run Code Online (Sandbox Code Playgroud)

kes*_*ebe 5

这就是初始化列表的用途。例如,您可以有一个像这样的构造函数:

class list {
public:
    list(std::initializer_list<int> l) {
        for (int x : l) {
            // do something with x
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

或者通过使用模板使其更通用:

template<typename T>
class list {
public:
    list(std::initializer_list<T> l) {
        for (const auto &x : l) {
            // do something with x
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

  • 好功夫 :)。 (2认同)