Lista de inicialización del constructor de C++:por qué y cómo usarlo
Al crear instancias de objetos, los constructores suelen manejar la inicialización de variables miembro. Para dichos miembros, una lista de inicialización para constructores proporciona una forma abreviada y eficiente de su inicialización antes de que se ejecute el cuerpo del constructor. Además del rendimiento, a veces también es obligatorio debido a variables constantes o miembros de una clase base.
¿Qué es una lista de inicialización de constructores?
Una lista de inicialización de constructor es un procedimiento para inicializar variables miembro directamente, por lo tanto, no hay ningún constructor predeterminado que se copie y luego se asigne.
Sintaxis
La siguiente sintaxis de inicialización de la lista de constructores es la siguiente:
ClassName(type1 param1, type2 param2) : member1(param1), member2(param2) {
// Constructor body
}
Aquí, miembro1 y miembro2 se inicializan con param1 y param2 antes de que se ejecute el cuerpo del constructor.
Ejemplo de lista de inicialización de constructores
A continuación se muestra un ejemplo sencillo que demuestra cómo utilizar una lista de inicialización.
#include <iostream>
#include <string>
class Student {
public:
Student(const std::string& name, int age) : name(name), age(age) {}
void display() const {
std::cout << "Name: " << name << ", Age: " << age << "\n";
}
private:
std::string name;
int age;
};
int main() {
Student s("Navya", 20);
s.display();
return 0;
}
Salida
Name: Navya, Age: 20
¿Por qué utilizar listas de inicialización de constructores?
- Para evitar la inicialización predeterminada seguida de la reasignación, para ahorrar tiempo y recursos.
- Es obligatorio para ciertos tipos de variables constantes, miembros de referencia y miembros de clase base.
- Mantiene toda la lógica de inicialización en un solo lugar, separada del cuerpo del constructor.
Casos especiales
A continuación, analizaremos algunos casos especiales para la lista de inicialización del constructor:
Miembros constantes o de referencia
Las variables constantes y los miembros de referencia no se pueden reasignar, por lo que deben inicializarse en una lista de inicialización.
class Config {
public:
Config(const std::string& product, const int & model)
: product (product), model(model) {}
private:
const std::string product;
const int & model;
};
Inicialización de clase base
Cuando una clase derivada hereda de una clase base, puede usar una lista de inicialización para llamar al constructor de la clase base,
class Base {
public:
Base(int value) : baseValue(value) {}
protected:
int baseValue;
};
class Derived : public Base {
public:
Derived(int value, int extra) : Base(value), extraValue(extra) {}
private:
int extraValue;
};
Lenguaje C
- C# - Toma de decisiones
- C Recursividad
- Domine los bucles anidados en C#:explicación de For, While y Do-While
- Declaración de cambio de C#
- C Funciones definidas por el usuario
- Tutorial del marco de automatización de pruebas de IU codificadas
- C# - Delegados
- C++ do...while bucle con ejemplos
- Dominar punteros y matrices multidimensionales en C
- C - E/S de archivo
- C# - Interfaces