La liste d'initialisation dans les constructeurs peut-elle être utilisée dans des classes de modèle?

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

Question

Je trouve que la plupart des ouvrages sur les modèles C ++ ne disent pas s'il est possible ou non d'utiliser la liste d'initialisation dans le constructeur d'une classe de modèle.

Par exemple, j'ai un code comme celui-ci:

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];
    }

Puis-je remplacer le constructeur par

Stack(): count(0), capacity(INIT), data(new T [INIT])
Était-ce utile?

La solution

Oui. Le compilateur vous a-t-il dit le contraire?

Autres conseils

Je viens d’essayer et VS2008 dit que c’est correct, mais cela semble un peu étrange car certains grands auteurs ne le font pas (Eckel, par exemple, dans son "Thinking in C ++").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top