67 votes

Peut-on avoir une fonction virtuelle statique ? Si ce n’est pas le cas, alors POURQUOI?

<blockquote> <p><strong>Duplicata possible :</strong><br> <a href="https://stackoverflow.com/questions/1820477/c-static-virtual-members">Membres virtuels statiques C++ ?</a> </p> <p>Peut-on avoir une fonction virtuelle statique ? Si ce n’est pas le cas, alors POURQUOI?</p><pre><code></code></pre></blockquote>

71voto

Oli Charlesworth Points 148744

Non, car cela n’a aucun sens en C++.

Les fonctions virtuelles sont appelées lorsque vous disposez d’un pointeur/d’une référence à une instance d’une classe. Les fonctions statiques ne sont pas liées à une instance particulière, elles sont liées à une classe. C++ n’a pas de pointeurs vers la classe, il n’y a donc aucun scénario dans lequel vous pourriez appeler une fonction statique virtuellement.

11voto

Kerrek SB Points 194696

Cela n’aurait aucun sens. L’intérêt des fonctions membres virtuelles est qu’elles sont distribuées en fonction du type dynamique de l’instance d’objet sur laquelle elles sont appelées. D’autre part, les fonctions statiques ne sont liées à aucune instance et sont plutôt une propriété de la classe. Cela n’a donc aucun sens pour eux d’être virtuels. Si vous le devez, vous pouvez utiliser un répartiteur non statique :

Usage:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X