Clases triviales en C++

Cuando una clase o estructura en C++ tiene funciones miembro especiales proporcionadas por el compilador o explícitamente predeterminadas, entonces es un tipo trivial. Ocupa un área de memoria contigua. Puede tener miembros con diferentes especificadores de acceso.

Los tipos triviales tienen un constructor predeterminado trivial, un constructor de copia trivial, un operador de asignación de copia trivial y un destructor trivial. En cada caso, trivial significa que el constructor/operador/destructor no lo proporciona el usuario y pertenece a una clase que tiene:

  • Sin funciones virtuales ni clases base virtuales,
  • Sin clases base con un constructor/operador/destructor no trivial correspondiente
  • No hay miembros de datos de tipo de clase con un constructor/operador/destructor no trivial correspondiente

Los siguientes ejemplos muestran tipos triviales:

/*Since there are no explicit constructors,
there exists a default constructor*/
struct Trivial {
    int i;
  
private:
    int j;
};
  
/* In Trivial2 structure, the presence of the 
   Trivial2(int a, int b) constructor requires
   that you provide a default constructor. For 
   the type to qualify as trivial, we must  
   explicitly default that constructor.*/
struct Trivial2 {
    int i;
    Trivial2(int a, int b)
    {
        i = a;
    }
    Trivial2() = default;
};

Referencia: https://msdn.microsoft.com/en-us/library/mt767760.aspx

Este artículo es una contribución de Rohit Thapliyal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

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

Categories C++

Deja una respuesta

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