En este artículo, discutiremos el problema de la inicialización en C++ , los miembros de datos de una clase tienen un ámbito privado por defecto, por lo que no se puede acceder a ellos directamente fuera de la clase. Por lo tanto, cuando se crean objetos , los miembros del objeto no se pueden inicializar directamente y este problema de no poder inicializar miembros de datos se conoce como problema de inicialización .
Ejemplo: en el siguiente ejemplo, se crea una clase con dos miembros de datos. Estos miembros de datos no tienen un alcance definido explícitamente, por lo que son privados de forma predeterminada. Los miembros de datos privados no se pueden inicializar más tarde utilizando el objeto de la clase. Aquí, si los miembros de datos se inicializan utilizando el objeto de la clase, mostrará un error.
C++
// C++ program to demonstrate the // above approach #include <iostream> using namespace std; // Class declaring the data members class Student { int marks; int rollno; }; // Driver Code int main() { Student s1; // Member variables marks and // rollno cannot be initialized // outside the class directly s1.marks = 70; s1.rollno = 2; cout << "Student Roll No: "; cout << s1.rollno; cout << "Student Marks: "; cout << s1.marks; return 0; }
Producción:
Explicación: ahora, como en el código anterior, se puede ver que los miembros de datos privados no se pueden inicializar directamente fuera de la clase.
Para resolver el problema anterior de Inicialización , se utiliza el concepto de constructores . Son funciones miembro especiales que se llaman automáticamente cuando se crea un objeto de esa clase. Además, su nombre es el mismo que el nombre de la clase.
Los constructores deben usarse para inicializar las variables miembro de la clase porque las variables miembro no se pueden declarar o definir en una sola declaración. Por lo tanto, los constructores se utilizan para inicializar miembros de datos de una clase cuando se crea un objeto.
A continuación se muestra el programa C++ para ilustrar el concepto anterior:
C++
// C++ program to demonstrate the // above approach #include <iostream> using namespace std; // Class to declare the // data members class Student { int marks = 95; int rollno = 1234; // Wrong way }; // Driver Code int main() { Student s1; cout << s1.rollno; cout << s1.marks; return 0; }
Producción:
Explicación: el método anterior es incorrecto y no convierte al objeto en un objeto real porque los valores almacenados son basura debido al contexto privado de la clase Estudiante. El objeto simplemente aparece físicamente. Para hacer que el objeto se comporte como un objeto real que puede almacenar valores, entran en juego los constructores.
Ejemplo: en el siguiente ejemplo, se crea un constructor en la clase que inicializará las variables con el valor.
C++
// C++ program to demonstrate the // above approach #include <iostream> using namespace std; // Class student with // student details class Student { int marks; int rollno; // Constructor of // the class public: Student() { marks = 95; rollno = 1234; cout << "Student marks: " << marks << endl << "Student roll no: " << rollno; } }; // Driver Code int main() { Student s1; // Printed Student Details return 0; }
Student marks: 95 Student roll no: 1234
Publicación traducida automáticamente
Artículo escrito por jangirkaran17 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA