Brunni (./16) :
Je me rappelle que c'était très bien fichu à ce niveau-là quand je m'étais amusé avec Qt à l'époque, mais mes souvenirs sont vagues. C'était pour les trucs de données seulement non ? (avec le copy-on-write tout ça)
Effectivement. Les
QObjects utilisent un autre modèle (hiérarchie en arbre, libérer le parent libère automatiquement les fils).
Tu as un exemple d'objet simple créé soi-même avec la possibilité d'en passer des références à gauche et à droite ? 
http://www.tigen.org/kevin.kofler/fmathl/dyngenpar/doc/dyngenpar_8h_source.html#l00678QSharedDataPointer et
QSharedData font presque tout pour toi.
Seul truc "magique" ici:
http://www.tigen.org/kevin.kofler/fmathl/dyngenpar/doc/dyngenpar_8h_source.html#l01288(pour cloner correctement un
AbstractLexerStateData à travers une méthode virtuelle qui se charge de cloner l'objet dérivé, pas seulement la partie abstraite). Ce n'est pas nécessaire dans les cas simples où ta classe de données est une classe concrète (enfin plus précisément, où c'est une classe "finale", c'est-à-dire que tu n'en dérives pas, contrainte que le langage C++ te laisse le soin de respecter toi-même).