Inicialización de miembros de datos

En C++, las variables de clase se inicializan en el mismo orden en que aparecen en la declaración de clase.

Considere el siguiente código.

#include<iostream>
  
using namespace std;
  
class Test {
  private:    
    int y;
    int x;    
  public:
    Test() : x(10), y(x + 10) {}
    void print();
};
  
void Test::print()
{ 
   cout<<"x = "<<x<<" y = "<<y; 
}
  
int main()
{
    Test t;
    t.print();
    getchar();
    return 0;    
}

El programa imprime el valor correcto de x, pero algún valor basura para y, porque y se inicializa antes que x como aparece antes en la declaración de clase.

Entonces, una de las siguientes dos versiones se puede usar para evitar el problema en el código anterior.

// First: Change the order of declaration.
class Test {
  private:    
    int x;    
    int y;
  public:
    Test() : x(10), y(x + 10) {}
    void print();
};
// Second: Change the order of initialization.
class Test {
  private:    
    int y;
    int x;    
  public:
    Test() : x(y-10), y(20) {}
    void print();
};

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

Deja una respuesta

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