La liste d'initialisation dans les constructeurs peut-elle être utilisée dans des classes de modèle?
-
04-07-2019 - |
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])
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