Je regardais la question de Stack Overflow Quelle est la différence entre une fonction abstraite et une fonction virtuelle ? Je me demandais si chaque fonction abstraite devait être considérée comme une fonction virtuelle en C# ou en général ?
J'ai été un peu surpris par les réponses "vous devez remplacer ou vous pouvez remplacer" à cette question. N'étant pas un programmeur C#, j'ai tendance à penser que les fonctions abstraites ne sont qu'un concept de compilation, et que les fonctions abstraites sont des fonctions virtuelles par définition, puisque vous devez en fournir au moins une, mais que vous pouvez fournir plusieurs implémentations plus bas dans la hiérarchie.
Les fonctions virtuelles ont également une dimension au moment de la compilation, dans la mesure où vous ne pouvez pas remplacer une fonction non virtuelle, mais elles sont surtout un concept au moment de l'exécution, puisqu'il s'agit "simplement" de sélectionner l'implémentation correcte de la méthode en fonction du récepteur réel.