Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1482 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  virtual inline

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

virtual inline

n°1830738
frenchtouc​co
Posté le 23-12-2008 à 11:51:28  profilanswer
 

Salut,
 
est -il possible de déclarer une fonction virtual inline ?
 
Merci
 

mood
Publicité
Posté le 23-12-2008 à 11:51:28  profilanswer
 

n°1830767
Taz
bisounours-codeur
Posté le 23-12-2008 à 12:26:50  profilanswer
 

Oui

n°1830967
frenchtouc​co
Posté le 23-12-2008 à 18:22:16  profilanswer
 

merci

n°1830982
frenchtouc​co
Posté le 23-12-2008 à 19:25:29  profilanswer
 

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é?


Message édité par frenchtoucco le 23-12-2008 à 20:39:43
n°1830997
frenchtouc​co
Posté le 23-12-2008 à 20:38:33  profilanswer
 

personne ne sait :( ?

n°1831018
Taz
bisounours-codeur
Posté le 23-12-2008 à 23:28:33  profilanswer
 

non ça ne pose pas de problème.

n°1831043
frenchtouc​co
Posté le 24-12-2008 à 00:31:41  profilanswer
 

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 ?


Message édité par frenchtoucco le 24-12-2008 à 00:32:07
n°1831079
Taz
bisounours-codeur
Posté le 24-12-2008 à 09:19:48  profilanswer
 

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.

n°1831109
frenchtouc​co
Posté le 24-12-2008 à 10:09:30  profilanswer
 

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 :
  1. class A
  2. {
  3. virtual inline f(){...}
  4. };
  5. class B:public A
  6. {
  7. virtual inline f(){...}
  8. };
  9. main()
  10. {
  11. A * a;
  12. a= new B();
  13. a->f();
  14. }


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é?


Message édité par frenchtoucco le 24-12-2008 à 10:12:57
n°1831254
Taz
bisounours-codeur
Posté le 24-12-2008 à 12:14:43  profilanswer
 

Dans un contexte statique:

Code :
  1. virtual void B::f() { A::f(); }
  2. // ou bien
  3. B b;
  4. b.f();

mood
Publicité
Posté le 24-12-2008 à 12:14:43  profilanswer
 

n°1831524
jesus_chri​st
votre nouveau dieu
Posté le 25-12-2008 à 20:00:46  profilanswer
 

frenchtoucco a écrit :

Salut,
 
est -il possible de déclarer une fonction virtual inline ?
 
Merci
 


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.

n°1831679
frenchtouc​co
Posté le 26-12-2008 à 17:27:39  profilanswer
 

ok thx


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  virtual inline

 

Sujets relatifs
{HTML} Une <hr> inline[JS]Events et javascript "inline" (Mootools,mais pas seulement)
[CSS] Div en Inlineeasyphp, virtual host sous windows
Problème OleDb Virtual PCdeclaration styles INLINE ?
Heritage: virtual / static probleme de designMicrosoft virtual basic 2005
problème avec des méthodes inlineVirtual World
Plus de sujets relatifs à : virtual inline


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR