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
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
POO en C++

bookLista de Inicialización del Constructor

Una lista de inicialización permite a los constructores inicializar 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 sencilla. Sin embargo, a medida que el programa crece, las listas de inicialización resultan 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 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 respecto al 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 la variable dentro de la class.

Cuando se utilizan listas de inicialización en un constructor, el nombre del argumento puede ser igual al 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

Suggested prompts:

Can you provide an example of how to use an initialization list in a constructor?

Why is the order of member declaration important in initialization lists?

Can you explain what happens if I use the same name for both member variables and constructor arguments?

bookLista de Inicialización del Constructor

Desliza para mostrar el menú

Una lista de inicialización permite a los constructores inicializar 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 sencilla. Sin embargo, a medida que el programa crece, las listas de inicialización resultan 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 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 respecto al 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 la variable dentro de la class.

Cuando se utilizan listas de inicialización en un constructor, el nombre del argumento puede ser igual al 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