Можно ли использовать список инициализации в конструкторах в классах шаблонов?

StackOverflow https://stackoverflow.com/questions/230790

Вопрос

Я обнаружил, что в большинстве книг, посвященных шаблонам 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 говорит, что все в порядке, но это кажется немного странным, потому что некоторые великие авторы этого не делают (например, Экель в своей статье «Мышление на С ++»).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top