Taz a écrit :
bah ça fout en l'air le style RAII C++. Donc ça sert à rien.
|
Je viens de l'essayer, et j'en suis très agréablement surpris.
ça fout pas le style RAII en l'air. Pour se servir du GC pour une classe donnée, la seule chose à faire est de masquer ::new , ::new[], ::delete, et ::delete[], en héritant publiquement de gc par exemple.
Apres, tout est comme avant, on appelle toujours delete, sauf que secretement, la gestion de la mémoire n'est plus controlée par le programmeur, et il n'y a plus de fuites, tout au plus des absences d'appel de destructeur.
D'ailleurs au niveau perf, c'est pas catastrophique du tout. C'est meilleur que boost::shared_ptr<> dans pas mal de situation, notament dans le cas de petits objets, et dans les contextes multithreads.
La seule chose qui est bizarre, c'est que la classe gc ne soit pas dans un namespace, c'est hallucinant.