Je sais que la fonction membre normale d'une classe modèle sera instanciée chaque fois qu'elle est utilisée pour la première fois. Mais ceci ne peut pas être fait pour la fonction de membre virtuelle car elle peut être accédée par le pointeur de classe de base. Cela signifie que les fonctions membres virtuelles seront instanciées dès que la classe tmeplate est instanciée? Si pas quand?Lorsque les fonctions de membre virtuel d'une classe de modèle sont instanciées?
Répondre
14.7.1/9
en C++ 03:
Une mise en œuvre ne doit pas instancier implicitement un modèle de fonction, un modèle de membre, une fonction non membre virtuel, une classe de membre ou un membre de données statiques d'un modèle de classe cela ne nécessite pas d'instanciation. Il n'est pas spécifié si une implémentation instancie implicitement une fonction membre virtuelle d'un modèle de classe si la fonction de membre virtuel ne serait pas instanciée.
La mise en œuvre est définie.
Mais généralement, lorsqu'une classe de modèle est instanciée, tous les membres du nouveau type de classe sont générés.
Selon le C++ standard 14.6.4.1/4:
Si une fonction virtuelle est implicitement instancié, son point de instanciation suit immédiatement point de instanciation de sa catégorie englobante modèle spécialisation.
- 1. besoin d'un membre de modèle virtuel solution de contournement
- 2. Comment vérifier quelles parties du modèle sont instanciées?
- 3. Constructeur d'appel de membre virtuel
- 4. Où définir la fonction de modèle de membre de classe C++ et les foncteurs qui l'instancient?
- 5. Quelles sont les fonctions et extensions de modèle MVVM?
- 6. Les fonctions de modèle C++ sont-elles threadsafe?
- 7. Les membres de données de classe de modèle de base ne sont pas visibles dans la classe de modèle dérivée?
- 8. Comment inclure un membre de modèle dans une classe?
- 9. Problème lors de l'accès aux variables const statiques via les fonctions de membre de classe
- 10. Emacs indent modèle classe/fonctions
- 11. Une classe de base peut-elle déterminer si une classe dérivée a remplacé un membre virtuel?
- 12. parent :: dans les classes instanciées
- 13. Résolvez les fonctions virtuelles C++ de la classe de base
- 14. exemple de Boost Interpreter.hpp avec les fonctions de membre de classe
- 15. Modèle de conception pour les fonctions optionnelles?
- 16. fonction membre modèle de classe modèle appelé de fonction de modèle
- 17. Modifier les classes instanciées avec loadNibNamed
- 18. Accès aux méthodes de classes instanciées
- 19. Quel est l'objectif des fonctions de membre IUnknown dans END_COM_MAP?
- 20. Initialiser le membre statique de la classe interne du modèle
- 21. Agrégation UML lorsque les interfaces sont utilisées
- 22. initialisation Membre statique dans un modèle de classe
- 23. en utilisant g ++, comment déprécier les fonctions de membre de classe virtuelle
- 24. Est-il possible de fournir des exceptions dans un membre de classe virtuel (pur) C++?
- 25. Spécialisation d'un membre d'une classe de modèles pour un type de paramètre de classe de modèle
- 26. Spécialisation d'une fonction de membre de modèle d'une classe de modèle?
- 27. Les fonctions surchargées sont masquées dans la classe dérivée
- 28. spécialisation de modèle de classe modèle
- 29. Transformer un membre de classe normal en un membre de classe statique
- 30. Modèle de membre C++ pour boost ptr_vector
Il veut savoir si la fonction est instanciée ou non. Pas où l'instanciation est mise. –