Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Lista de Inicialización del Constructor | Constructores y Destructores
POO en C++
course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Lista de Inicialización del Constructor

Una lista de inicialización permite que los constructores inicialicen los miembros de la clase antes de que se ejecute el cuerpo del constructor. Es especialmente útil para inicializaciones complejas o al trabajar con objetos de clases que tienen miembros const.

Sintaxis de la lista de inicialización

La sintaxis de las listas de inicialización puede parecer excesivamente compleja y confusa. Se podría considerar utilizar solo un constructor como una alternativa más simple. Sin embargo, a medida que el programa crece, las listas de inicialización resultan ser convenientes y sencillas de utilizar.

  • :(símbolo de dos puntos): introduce la lista de inicialización de miembros en un constructor;

  • miembro (valor): una variable miembro de la clase que se inicializa con el valor (argumento pasado al constructor);

  • { }(llaves): el cuerpo del constructor, donde se puede ejecutar código adicional después de la inicialización de los miembros.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitaciones y consideraciones

Existe una idea errónea común sobre el orden de inicialización en la lista de inicialización. Contrario a la creencia popular, la inicialización de variables en la lista de inicialización no sigue el orden en que están escritas. En su lugar, está determinada por el orden de declaración de los miembros en la clase, no por la secuencia en la lista de inicialización.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Intenta modificar la secuencia de inicialización de la variable total en la lista de inicialización y en la declaración de variables dentro de la class.

Cuando se utilizan listas de inicialización en un constructor, el nombre del argumento puede ser el mismo que el nombre del atributo de la class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Pero si usas el mismo nombre tanto para las variables miembro como para los argumentos, el total tomará el valor de los argumentos multiplicados, no de los miembros. Para ver esto, intenta establecer quantity en cero en lugar del argumento.

1. ¿Qué es una lista de inicialización de constructor?

2. ¿Qué símbolo introduce la lista de inicialización de miembros en un constructor?

question mark

¿Qué es una lista de inicialización de constructor?

Select the correct answer

question mark

¿Qué símbolo introduce la lista de inicialización de miembros en un constructor?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

course content

Contenido del Curso

POO en C++

POO en C++

1. Fundamentos de la POO en C++
2. Constructores y Destructores
3. Visión General de la Encapsulación
4. Visión General de la Herencia
5. Visión General del Polimorfismo

book
Lista de Inicialización del Constructor

Una lista de inicialización permite que los constructores inicialicen los miembros de la clase antes de que se ejecute el cuerpo del constructor. Es especialmente útil para inicializaciones complejas o al trabajar con objetos de clases que tienen miembros const.

Sintaxis de la lista de inicialización

La sintaxis de las listas de inicialización puede parecer excesivamente compleja y confusa. Se podría considerar utilizar solo un constructor como una alternativa más simple. Sin embargo, a medida que el programa crece, las listas de inicialización resultan ser convenientes y sencillas de utilizar.

  • :(símbolo de dos puntos): introduce la lista de inicialización de miembros en un constructor;

  • miembro (valor): una variable miembro de la clase que se inicializa con el valor (argumento pasado al constructor);

  • { }(llaves): el cuerpo del constructor, donde se puede ejecutar código adicional después de la inicialización de los miembros.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitaciones y consideraciones

Existe una idea errónea común sobre el orden de inicialización en la lista de inicialización. Contrario a la creencia popular, la inicialización de variables en la lista de inicialización no sigue el orden en que están escritas. En su lugar, está determinada por el orden de declaración de los miembros en la clase, no por la secuencia en la lista de inicialización.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Intenta modificar la secuencia de inicialización de la variable total en la lista de inicialización y en la declaración de variables dentro de la class.

Cuando se utilizan listas de inicialización en un constructor, el nombre del argumento puede ser el mismo que el nombre del atributo de la class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Pero si usas el mismo nombre tanto para las variables miembro como para los argumentos, el total tomará el valor de los argumentos multiplicados, no de los miembros. Para ver esto, intenta establecer quantity en cero en lugar del argumento.

1. ¿Qué es una lista de inicialización de constructor?

2. ¿Qué símbolo introduce la lista de inicialización de miembros en un constructor?

question mark

¿Qué es una lista de inicialización de constructor?

Select the correct answer

question mark

¿Qué símbolo introduce la lista de inicialización de miembros en un constructor?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 2. Capítulo 3
some-alt