Caractéristiques de is_base_of

std::is_base_of est un trait de type (Type Trait) dans la bibliothèque standard C++, utilisé pour déterminer si une classe est la classe de base d'une autre classe.

std::is_base_of fournit une valeur booléenne au moment de la compilation indiquant si le premier type spécifié est dérivé (ou est une classe de base stricte) du deuxième type spécifié. Il est défini dans le fichier d'en-tête <type_traits>, qui doit être inclus lors de son utilisation.

Exemple d'utilisation de std::is_base_of :

#include <iostream>
#include <type_traits>

class Base {
    
    };

class Derived : public Base {
    
    };

int main() {
    
    
    std::cout << std::boolalpha;
    std::cout << std::is_base_of<Base, Derived>::value << std::endl;  // 输出 true
    std::cout << std::is_base_of<Derived, Base>::value << std::endl;  // 输出 false
    return 0;
}

Dans l'exemple ci-dessus, nous avons défini deux classes Base et Derived. Derived est dérivé de Base (classe de base). Nous utilisons std::is_base_of pour vérifier si Derived est la classe de base de Base. La première vérification renvoie vrai car Derived est une classe dérivée de Base. La deuxième vérification renvoie false car Base n'est pas la classe de base de Derived.

En plus d'utiliser le membre .value pour obtenir le résultat, vous pouvez également utiliser le membre .type pour obtenir un type std::integral_constant<bool, value>, où value est une valeur booléenne indiquant s'il s'agit d'une classe de base.

En résumé, std::is_base_of est un attribut de type utilisé pour déterminer si une classe est la classe de base d'une autre classe. Il est très utile en métaprogrammation pour évaluer et distribuer conditionnellement les types au moment de la compilation.

Guess you like

Origin blog.csdn.net/neuzhangno/article/details/132214739