Next: Héritage
Up: Comment ça marche ?
Previous: Comment ça marche ?
Le C++ veut être un langage ``pratique'' avec de bonnes performances.
On peut décrire quelques objectifs de la réalisation du langage :
- non pénalité :
le principe de base déclaré des concepteurs du langage est
``on ne paie que pour ce qu'on achète'',
en d'autres termes, on ne doit pas être pénalisé par des
facilités du langage si on ne les utilise pas : un programme C,
compilé en C++, générera un code aussi efficace que
compilé en C
- efficacité :
l'objectif reste, comme en C, d'avoir un langage efficace même si
c'est au détriment de la ``pureté''. Les choix du C++ sont
guidés par ce critère, c'est la raison pour laquelle on
comprend mieux le C++ en comprenant comment il est réalisé
- compatibilité : il faut que le C++ puisse cohabiter
avec d'autres langages comme le C ; il est préférable, par
exemple, que les types du C puissent être utilisés comme des
types du C++ ; cela exclut, a priori, par exemple,
d'avoir automatiquement un membre qui nommerait la
structure
- typage statique : pour des raisons d'efficacité, il
faut que le compilateur fasse le maximum et en particulier puisse
résoudre les problèmes de typage. Il faut que tout objet ait
une taille définie à la compilation
Pour la suite, il faut se souvenir que les fonctions membres ont un
``argument caché'' qui est le pointeur this, avec l'héritage,
il faudra aussi que la fonction membre appelée ait comme ``argument
caché'' une adresse qui corresponde effectivement à une adresse du
type pour lequel la fonction a été définie. Par exemple, si
B est une classe dérivée de A, f une fonction membre
de A, et b un objet de la classe B, un appel de
b.f() provoque un appel de A::f(), mais l'``argument caché''
pour cet appel doit être l'adresse d'une zone correspondant à un
A et donc doit être l'adresse de la partie A de b.
Comme on le verra, jusqu'à l'héritage multiple tout est
simple...
Next: Héritage
Up: Comment ça marche ?
Previous: Comment ça marche ?
Mon Oct 20 14:02:48 MET 1997