Plantilla std::is_base_of en C++ con ejemplos

La plantilla std::is_base_of de C++ STL está presente en el archivo de encabezado <type_traits> . La plantilla std::is_base_of de C++ STL se usa para verificar si la clase Base es la clase base de la clase Derivada o no. Devuelve el valor booleano verdadero o falso sobre la base de la condición anterior.

Archivo de cabecera:

#include<type_traits>

Clase de plantilla:

template <class Base, class Derived>
struct is_base_of;

Sintaxis:

std::is_base_of<A, B>::value

Parámetros: Acepta las siguientes dos clases como parámetros:

  • clase A (como clase base): representa la clase base.
  • clase B (como una clase Derivada): Representa la clase derivada.

Valor devuelto: esta plantilla devuelve una variable booleana como se muestra a continuación:

  • Verdadero: si la clase Base (clase A ) es el padre de la clase Derivada (clase B ).
  • Falso: si la clase Base (clase A ) no es el padre de la clase Derivada (clase B ).

A continuación se muestra el programa para ilustrar la plantilla std::is_base_of en C/C++:

Programa 1:

// C++ program to demonstrate the
// std::is_base_of templates
#include <bits/stdc++.h>
#include <type_traits>
using namespace std;
  
// Base class A
class A {
};
  
// Derived Class B
class B : A {
};
  
// Class C
class C {
};
  
// Driver Code
int main()
{
  
    cout << boolalpha;
  
    // Check if class A is a base class
    // of class B
    cout << "A is base class of B: "
         << is_base_of<A, B>::value
         << endl;
  
    // Check if class B is a base class
    // of class A
    cout << "B is base class of A: "
         << is_base_of<B, A>::value
         << endl;
  
    // Check if class C is a base class
    // of class B
    cout << "C is base class of B: "
         << is_base_of<C, B>::value
         << endl;
  
    // Check if class C is a base class
    // of class C
    cout << "C is base class of C: "
         << is_base_of<C, C>::value
         << endl;
  
    return 0;
}
Producción:

A is base class of B: true
B is base class of A: false
C is base class of B: false
C is base class of C: true

Referencia: http://www.cplusplus.com/reference/type_traits/is_base_of/

Publicación traducida automáticamente

Artículo escrito por bansal_rtk_ y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *