C'est quoi la valeur par défaut d'un pointeur de fonction qui as du sens ? nullptr, ou une fonction au hasard ? Les deux cas n'ont pas de sens et sont dangereux, bref, avoir un pointeur "default-initialised" n'as pas de sens.
L'initialisation par défaut a du sens et c'est évident. Je sais que les programmeurs Haskell adore rappeler au autres à quel point leur langage est supérieur à la plèbe de ce monde car il n'autorise pas l'initialisation, mais la tu fais preuve d'un poil de mauvaise fois :)
Un dangling pointer va te causer des effets de bords alétoire, dépendant de la platforme et de l'initialisation de la mémoire. Dans le cas de l'utilisation d'un pointeur non initialisé, tu peux trés bien obtenir un programme qui marchera pendant 10 ans car ton pointeur utilise une région de mémoire qui est aléatoirement remplit de zero, et qui va segfaulter aleatoirement aprés dix ans car pour une raison X, ce segment de mémoire était différent ce jour là.
Dans le cas d'une initialisation forcée à null_ptr, tu auras un comportement déterministique ( qui segfaultera ) ce qui est déja bien plus "safe".
L'initialisation par défaut doit TOUJOURS être fait, sauf si trés bonne raison, point barre.
Ici mon seul contrat concernant le constructeur par défaut c'est le petit commentaire qui dit "black". C'est faible, et demain ce constructeur par défaut peut changer très facilement pour construire une autre couleur, sans doute le blanc, car pour les besoins de ce projet on fait plus du multiplicatif sur les couleurs que de l'additif, donc le blanc semble un meilleur choix par défaut.
Dans ce cas, ton problème est ton développeur qui trouve bon de changer le comportement par défaut d'une fonction sans changer l'API. Ce qui est idiotique et inacceptable dans tout code partagé. Le problème ce n'est pas l'initialisation par défaut, encore une fois.
[^] # Re: Pas uniquement string
Posté par Firwen (site web personnel) . En réponse au journal Switch, chaîne constante et c++. Évalué à 4.
L'initialisation par défaut a du sens et c'est évident. Je sais que les programmeurs Haskell adore rappeler au autres à quel point leur langage est supérieur à la plèbe de ce monde car il n'autorise pas l'initialisation, mais la tu fais preuve d'un poil de mauvaise fois :)
Un dangling pointer va te causer des effets de bords alétoire, dépendant de la platforme et de l'initialisation de la mémoire. Dans le cas de l'utilisation d'un pointeur non initialisé, tu peux trés bien obtenir un programme qui marchera pendant 10 ans car ton pointeur utilise une région de mémoire qui est aléatoirement remplit de zero, et qui va segfaulter aleatoirement aprés dix ans car pour une raison X, ce segment de mémoire était différent ce jour là.
Dans le cas d'une initialisation forcée à null_ptr, tu auras un comportement déterministique ( qui segfaultera ) ce qui est déja bien plus "safe".
L'initialisation par défaut doit TOUJOURS être fait, sauf si trés bonne raison, point barre.
Dans ce cas, ton problème est ton développeur qui trouve bon de changer le comportement par défaut d'une fonction sans changer l'API. Ce qui est idiotique et inacceptable dans tout code partagé. Le problème ce n'est pas l'initialisation par défaut, encore une fois.