merci pour vos réponses
Le 14 janvier 2015 à 17:27:39 LGV a écrit :
Thinking in C++
Effective C++
More Effective C++
Modern C++ Design
Large Scale C++ Software Design
lequel parmis ceux que tu me cites est le plus orienté approche conception du langage (pas conception logiciel que l'on veut programmer, je parle bien de la conception du langage en lui même)
j'espère ne pas trop en demandé
Le 14 janvier 2015 à 17:36:43 godrik a écrit :
DenshaOtoko,
Les livres de Scott Meyers sont tres bon (il vient d'en publier un autre que je n'ai pas encore lu). Mais ils ne repondront pas a tes questions. Je regarde en ce moment le livre "A tour of C++". Ca a l'air tres bien aussi, mais encore une fois, c'est plus langage que implementation.
Ce que tu cherches a savoir ne depends pas du langage mais du compilateur. La meilleur source d'information est certainement la doc du compilateur et de lire l'assembleur genere.
Mais globalement les questions sont simple. Les fonctions virtuelle sont gere en ayant une (ou des) tableau de pointeurs. Et chaque fonction virtuelle correspond a une entre du tableau. Ce tableau est rempli a la construction de l'objet par le compilateur. Eventuellement certain compilateur choisisse de faire une table de pointeur par type (au lieu de par objet) et garde simplement un pointeur dans l'objet sur cette table. Ca fait une indirection de plus, mais ca sauve de la memoire.
d'accord je vois, cela dépend du compilateur, mais du coup tous les compilateurs ne se comportent pas de la même manière face à des choix d’implémentations de certains concepts fondamentaux comme la virtualité ou la généricité, si je regarde la documentation de g++, tout ne sera pas forcement vrai avec clang++ donc, mais tous ces compilateurs doivent surement respecter certaines normes de compilation du langage j'imagine non ?
Les templates. C'est con a mourrir. Le compilateurs fait essentiellement du copier coller (comme tu ferais si tu ecrivais un script bash pour genere le code) et compile le code resultant.
ok, ce serait un peu comme des macros de préprocesseurs en C, la phase de préprocesseur qui copie colle du code avant de compiler, donc là les templates fonctionneraient pareil, mais il faudrait que je voie ça en pratique et en détail pour vraiment intérioriser l'approche, voir la forme du code résultant, ce qu'il copie colle en fonction de l’interprétation de la template etc
je vais voir du côté de la documentation de g++ qui me semble être le compilateur c++ le plus conventionnel (non?)
mais je ne trouve pas la doc officielle de g++
https://gcc.gnu.org/onlinedocs/
je vois ça, mais je vois que la doc sur la librairie standard c++, dans cette dernière il y a explication de certains mode de compilation, mais pas de doc sur le compilateur en lui même
merci