Je lis modèles ebook guide complet et question que je vais demander peut-être stupide pour vous, mais ..compréhension appel de fonction virtuelle et classe de base dépendante
Il y a dans la section qui 9.4.2 à charge Classes de base que je suis incapable de comprendre.
Voici le texte partiel de celui-ci: http://tinypaste.com/633f0
// Variation 2:
template<typename T>
class DD2 : public Base<T> {
public:
void f() { Base<T>::basefield = 0; }
};
je besoin d'aide pour visualiser la ligne (ou domaine de problème) dans le texte ci-dessus "Il faut prendre soin de cette solution, car si le non qualifié nom non dépendantes est utilisé pour former un appel de fonction virtuelle, alors la qualification inhibe le mécanisme d'appel virtuel et la signification des changements de programme.Il y a cependant des situations où la première variation ne peut pas être utilisée et cette alternative est appropriée "
Je comprends inégal ified nom non-dépendants, etc, mais les mélanger avec l'appel de fonction virtuelle est ce qui me échappe.
Ceci est une sentance horrible n'est-ce pas, ce code semble être conçu pour permettre un comportement polymorphe non virtuel. C'est à dire. votre classe dérivée peut remplacer les méthodes de votre classe de base, mais la recherche est effectuée au moment de la compilation. Je soupçonne que "Inhibiting" dans ce sens signifie que vous n'obtiendrez pas la recherche dynamique habituelle basée sur vtable runtime .... – Benj
Besoin de plus de contexte. Quel est le problème que ce code tente de résoudre? –