On Wed, Nov 03, 2004 at 07:02:29PM +0100, Laurent Martelli wrote: > >>>>> "Gabriel" == Gabriel Paubert <[EMAIL PROTECTED]> writes: > > [...] > > Gabriel> Autre exemple de gag en C++ avec gtkmm, juste dériver une > Gabriel> classe de Gtk::Window: les constructeurs/destructeurs et > Gabriel> autres tables virtuelles construits juste pour ça font 20 > Gabriel> kilo-octets avant même de rajouter ta fonctionnalité. Ces > Gabriel> 20 kilo-octets disparaissent si tu mets le Gtk::Window > Gabriel> comme membre de ta classe. > > Il y a peut-être pas mal de symbols pour le débuggage dans les > 20Ko. As-tu essayé de stripper pour voir ?
Non, ce n'est pas du debug, en tout cas pas uniquement. Il y a 2 copies de chaque destructeur et constucteur pour des raisons techniques que je viens de comprendre et j'ai gagné 6koctets en déclarant des constructeurs très courts qui appellent d'autres fonctions pour éviter la duplication. Mais les vtables et autres données associées sont monstrueuses à cause de la complexité de la hiérarchie de classes (bases multiples et virtuelles). Hériter d'une classe existante semble plus propre mais il faut vraiment en voir le coût, composer est nettement moins cher en terme de taille de l'exécutable et pas franchement pire dans ce cas. C'était mon premier projet en C++, il se pourrait bien que ce soit le dernier. Gabriel