Bonjour.
D'après ce que j'ai compris, le constructeur par défaut implicite d'une classe appelle le constructeur par défaut des données membres, excepté pour celles de type POD qu'il laisse non-initialisées.
Mais qu'en est-il pour le constructeur par défaut d'un type POD ?
Est-ce que par exemple int() retournera toujours 0, ou est-ce que ce comportement n'est pas garanti ?
D'après les souvenirs que j'ai et les tests que j'ai faits, je pense que oui.
Mais je préfère en avoir le cœur net.
Tout ça pour en arriver à la question qui m'intéresse vraiment.
Peut-on écrire ce qui suit et en attendre le comportement désiré :
ou est-il impératif d'écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 class POD { bool m_bool; char m_char; int m_int; double m_double; void * m_pointer; (...) }; // class POD //**********************// POD::POD() : m_bool(), m_char(), m_int(), m_double(), m_pointer()... {}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 POD::POD() : m_bool(false), m_char('\0'), m_int(0), m_double(0.), m_pointer(NULL)... // ou « 0 » ; ou « nullptr » en C++11 {}
Partager