Personnellement, je pense qu'une des principales raisons pour lesquelles le C++ est adapté à la conception architecturale est qu'il peut programmer pour l'avenir. Par exemple, vous pouvez utiliser public/protected/private pour limiter l'accès des classes dérivées aux membres de la classe de base, et vous pouvez définir des interfaces que les classes abstraites nécessitent que les classes dérivées implémentent, etc.
Lorsque nous déclarons/définissons une fonction virtuelle, la classe dérivée peut choisir de remplacer ou non la fonction virtuelle. Sur ce point, C++ fournit également les méthodes nécessaires pour exiger que les classes dérivées couvrent certaines méthodes, ce qui peut également être considéré comme une sorte de programmation future.
Fonction virtuelle pure
Ce n'est pas une nouvelle technologie, et la fonction est très simple : une fois qu'une classe de base déclare une fonction virtuelle pure, sa dérivée Cette fonction doit être remplacé lorsque la classe est instanciée.
Dans cet exemple, la méthode sub::f1() est commentée, donc une erreur de compilation se produira à la ligne 27.
spécificateur final
De manière générale, s'il existe une méthode de remplacement requise, il devrait y avoir un moyen d'interdire le remplacement. Mais je ne sais pas pourquoi, cette fonctionnalité n’a été introduite qu’en C++11. La méthode d'utilisation est également très simple : il suffit d'ajouter le spécificateur final après la déclaration de la fonction.
Le code est fondamentalement inchangé, sauf que le spécificateur final est remplacé après l'instruction base::f1(). À ce stade, si la méthode sub::f1() est définie, une erreur de compilation comme indiqué ci-dessus se produira.
Point de vue de l'auteur
Cet article rassemble des fonctions virtuelles pures et des spécificateurs finaux sur la base de la compréhension personnelle de l'auteur. S'il y a des inexactitudes, n'hésitez pas à les ajouter et à les corriger.
Articles connexes :
Parlez en détail des spécificateurs finaux et de remplacement de C++11
auto et nouvelles fonctionnalités en C++ 11 différences et connexions decltype
Vidéos associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!