Maison  >  Article  >  développement back-end  >  Nouvelles fonctionnalités C++ 11 - utilisation de fonctions virtuelles pures et de spécificateurs finaux

Nouvelles fonctionnalités C++ 11 - utilisation de fonctions virtuelles pures et de spécificateurs finaux

php是最好的语言
php是最好的语言original
2018-08-01 13:40:292455parcourir

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.

Nouvelles fonctionnalités C++ 11 - utilisation de fonctions virtuelles pures et de spécificateurs finaux

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.

Nouvelles fonctionnalités C++ 11 - utilisation de fonctions virtuelles pures et de spécificateurs finaux

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 :

Tutoriel langage C

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn