L'effacement de type en C fait référence à la technique consistant à masquer tout ou partie des informations de type concernant une classe, similaire à Boost.Any. Voici différentes approches d'effacement de type :
Les fonctions virtuelles sont une technique classique dans laquelle vous faites abstraction de l'implémentation d'une classe dans une hiérarchie de classes basée sur une interface. Cette approche est adoptée par de nombreuses bibliothèques Boost, telles que Boost.Any et Boost.Shared_ptr, pour masquer les types ou les mécanismes de désallocation.
Une option alternative consiste à utiliser des pointeurs de fonction avec des fonctions basées sur un modèle, tout en stockant l'objet réel dans un pointeur void*. Boost.Function utilise cette technique pour masquer le type réel d'un foncteur.
Par exemple, l'approche de GMan utilise des modèles pour masquer les types réels. sans recourir à des fonctions virtuelles ou à void* manipulation.
shared_ptr
Toutes les techniques d'effacement de type en C utilisent des pointeurs de fonction et des pointeurs void* , la principale différence étant l'apport de sucre sémantique.
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!