Buscamos en el mundo online para brindarte la solución para tu duda, si continúas con dudas puedes dejarnos tu duda y te contestamos sin falta.
Solución:
Como han dicho otros, es una lista de inicialización. Puedes usarlo para dos cosas:
- Llamando a constructores de clases base
- Inicializar variables miembro antes de que se ejecute el cuerpo del constructor.
Para el caso n. ° 1, asumo que comprende la herencia (si ese no es el caso, hágamelo saber en los comentarios). Entonces simplemente está llamando al constructor de su clase base.
Para el caso #2, se puede hacer la pregunta: “¿Por qué no simplemente inicializarlo en el cuerpo del constructor?” La importancia de las listas de inicialización es particularmente evidente para const
miembros Por ejemplo, eche un vistazo a esta situación, donde quiero inicializar m_val
basado en el parámetro del constructor:
class Demo
Demo(int& val)
m_val = val;
private:
const int& m_val;
;
Según la especificación de C++, esto es ilegal. No podemos cambiar el valor de un const
variable en el constructor, porque está marcada como const. Entonces puedes usar la lista de inicialización:
class Demo
Demo(int& val) : m_val(val)
private:
const int& m_val;
;
Esa es la única vez que puede cambiar una variable de miembro const. Y como señaló Michael en la sección de comentarios, también es la única forma de inicializar una referencia que es miembro de una clase.
Fuera de usarlo para inicializar const
variables miembro, parece haber sido generalmente aceptado como “la forma” de inicializar variables, por lo que es claro para otros programadores que leen su código.
Esto se llama una lista de inicialización. Es para pasar argumentos al constructor de una clase padre. Aquí hay un buen enlace que lo explica: Listas de inicialización en C++
Se llama una lista de inicialización. Una lista de inicializadores es cómo pasa argumentos a los constructores de sus variables miembro y para pasar argumentos al constructor de la clase principal.
Si utiliza =
para asignar en el cuerpo del constructor, primero se llama al constructor predeterminado, luego se llama al operador de asignación. Esto es un poco derrochador y, a veces, no hay un operador de asignación equivalente.
Puntuaciones y reseñas
Si para ti ha resultado de utilidad nuestro artículo, nos gustaría que lo compartas con el resto programadores así nos ayudas a difundir nuestro contenido.