Salut à tous.
Je me pose une question de conception qui est en rapport avec une discussion sur la mutabilité des strings en C++ que j'ai croisée il y un petit temps.
Si on respecte strictement ce principe, il est évident qu'on ne peut inclure d'opérateur d'affectation dans une classe. L'ennui, c'est qu'une classe sans opérateur d'affectation ce n'est pas pratique à manipuler.
Même si un compilateur C++ considère un opérateur d'affectation comme n'importe quel autre opérateur, conceptuellement ce n'est pas pareil. Son fonctionnement consiste presque toujours à détruire l'objet puis à lui assigner une autre valeur (et il est bien rare qu'on impose un comportement différent), on peut donc considérer le plus souvent que ce n'est qu'un raccourci de la syntaxe qui nous dispense d'appeler le destructeur puis le constructeur de copie, comme les conteneurs de la stl le font par l'intermédiaire des allocateurs par exemple.
Vous pourriez me dire qu'une fois que la valeur de la mémoire est fixée, elle est fixée, on a qu'à instancier ailleurs. Mouais, c'est bon pour le lisp ça, vous imaginez un algo de tri?
Donc le sujet: pour ou contre des classes non-mutables mais quand même avec opérateur d'affectation?
Partager