Constructeur par défaut et POD
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é :
Code:
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()...
{} |
ou est-il impératif d'écrire :
Code:
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
{} |