构造函数中的初始化列表能否用于模板类中

Can initialization list in constructors be used in template classes?

本文关键字:用于 初始化 列表 构造函数      更新时间:2023-10-16

我发现大多数关于C++模板的书都没有说明在模板类的构造函数中是否可以使用初始化列表。

例如,我有这样的代码:

template <class T>
class Stack {
    T* data;
    std::size_t count;
    std::size_t capacity;
    enum {INIT = 5};
public:
    Stack() {
        count = 0;
        capacity = INIT;
        data = new T [INIT];
    }

我可以用替换构造函数吗

Stack(): count(0), capacity(INIT), data(new T [INIT])

是。编译器告诉你其他情况了吗?

我刚刚尝试过,VS2008说这还可以,但这似乎有点奇怪,因为一些伟大的作者没有这样做(例如Eckel在他的"用C++思考"中)。