virtual inline - C++ - Programmation
Marsh Posté le 23-12-2008 à 19:25:29
2eme question : cela pose t-il un problème à la compilation et/ou l'exécution quand l'appel à une fonction virtual inline se fait à partir d'un objet dérivé?
Marsh Posté le 24-12-2008 à 00:31:41
ce qui me surprend, c'est que je pensais qu'à la compilation, le compilateur ne sachant pas qu'elle est le type de l'objet qui appelle la fonction déclaré virtual(i.e:fonction de la classe mère ou bien fonction de la classe fille?) ne puisse pas être en mesure d'inliner le code... j'ai faux ?
Marsh Posté le 24-12-2008 à 09:19:48
Non. C'est tout à fait justement. Seulement rien ne t'empêche de déclarer virtual inline et rien n'empêche un compilateur d'inliner un appel à une fonction virtual s'il sait la résoudre statiquement.
Marsh Posté le 24-12-2008 à 10:09:30
est ce que je pourrais avoir un exemple de code svp, qui mettre en évidence l'appel à une fonction virtual inline à partir d'une classe fille que le compilateur sache résoudre statiquement:
Code :
|
Dans ce cas le compilateur ne peut pas inliner a->f() à priori si j'ai bien compris, mais dans quel cas peut-il le faire comme tu me l'a souligné?
Marsh Posté le 24-12-2008 à 12:14:43
Dans un contexte statique:
Code :
|
Marsh Posté le 25-12-2008 à 20:00:46
frenchtoucco a écrit : Salut, |
On définit une fonction inline, plutôt que de la déclarer inline. De plus si tu définit la méthode dans la classe, elle sera de-facto inline.
Tes doutes vis à vis de la capacité du compilo à inliner un appel virtuel sont justifiés, mais comme le dit Taz, le compilo s'en sort bien tout seul.
Marsh Posté le 23-12-2008 à 11:51:28
Salut,
est -il possible de déclarer une fonction virtual inline ?
Merci