• [^] # Re: Evite le C++

    Posté par (site web personnel) . En réponse au journal C(++) ?. Évalué à 3.

    Et ta fonction mafonction n'est jamais appelée avec un pointeur nul déréférencé en argument. Un exemple du genre

    MaStructure* macopie = monargument->clone();
    mafonction(*macopie);

    est bien-sûr complètement artificiel et n'arrive jamais dans du vrai code.

    Sauf que là tu as dû jouer avec un... pointeur, qui permet en effet de bidouiller en C++, comme en C vu que tu manipules directement l'adresse.

    Désolé mais les pointeurs font partie du langage C++ ce qui veut en particulier dire qu'il existe des fonctions qui renvoient des pointeurs. (Pour la bonne raison que les références n'ont pas de sémantique de propriété mais seulement d'alias.) Donc qu'on passe des arguments de type référence avec comme valeur des pointeurs déréferencés — qui peuvent bien-sûr être nul.

    La vraie différence entre une référence et un pointeur est qu'une référence ne peut pas être deleted.