Métodos predeterminados en C++ con ejemplos

Si escribimos una clase que no tiene métodos y la clase no hereda de otra clase, el compilador le agregará seis métodos automáticamente. Los métodos que puede generar automáticamente el compilador son:
 

  1. Constructor predeterminado : es equivalente a un constructor predeterminado vacío. El constructor predeterminado es un constructor al que se puede llamar sin argumentos. Se llama cuando se crea una instancia sin inicialización.
     
class_name object_name;
  1. Considere una clase derivada de otra clase con el constructor predeterminado, o una clase que contenga otro objeto de clase con el constructor predeterminado. El compilador necesita insertar código para llamar a los constructores predeterminados de la clase base/objeto incrustado.
     

CPP

#include <iostream>
using namespace std;
  
class Base {
public:
    // compiler "declares" constructor
};
  
class A {
public:
    // User defined constructor
    A()
    {
        cout << "A Constructor" << endl;
    }
  
    // uninitialized
    int size;
};
  
class B : public A {
    // compiler defines default constructor of B, and
    // inserts stub to call A constructor
  
    // compiler won't initialize any data of A
};
  
class C : public A {
public:
    C()
    {
        // User defined default constructor of C
        // Compiler inserts stub to call A's constructor
        cout << "C Constructor" << endl;
  
        // compiler won't initialize any data of A
    }
};
  
class D {
public:
    D()
    {
        // User defined default constructor of D
        // a - constructor to be called, compiler inserts
        // stub to call A constructor
        cout << "D Constructor" << endl;
  
        // compiler won't initialize any data of 'a'
    }
  
private:
    A a;
};
  
int main()
{
    Base base;
  
    B b;
    C c;
    D d;
  
    return 0;
}

Producción:
 

A Constructor
A Constructor
C Constructor
A Constructor
D Constructor

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks 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 *