Constructores de C++:uso de argumentos predeterminados para la creación de objetos flexibles
Un constructor es una función miembro especial de una clase, que se llama automáticamente cuando se crea un objeto. Se utilizan para inicializar el objeto con valores o configuraciones predeterminadas.
Mientras que los argumentos predeterminados en C++ permiten especificar valores predeterminados para los parámetros de función o constructor.
Constructor con argumentos predeterminados
Un constructor con argumentos predeterminados es un constructor que permite la creación de un objeto utilizando parámetros opcionales. Donde se proporcionan los valores predeterminados para los parámetros, de modo que cuando el usuario no pasa ningún valor, se utiliza el valor predeterminado.
Sintaxis
Aquí está la sintaxis proporcionada para el constructor con argumentos predeterminados:
class ClassName {
public:
ClassName(parameter_Type parameter_Name = default_Value,
parameter_Type2 parameter_Name2 = default_Value2);
};
- Aquí, el constructor tiene el mismo nombre que la clase
- Se proporcionan valores predeterminados para uno o más parámetros.
- Si el usuario no pasa ningún valor, se utilizará este valor predeterminado.
Ejemplo de constructor con argumentos predeterminados
A continuación se muestra el siguiente ejemplo de constructor con argumentos predeterminados:
#include <iostream>
using namespace std;
// Function with a default argument
void printMessage(string message = "Hello, Tutorialspoint Learner") {
cout << message << endl;
}
int main() {
// Calling the function without an argument
printMessage(); // Prints the default message: "Hello, World!"
// Calling the function with a custom argument
printMessage("Hi, there!"); // Prints the custom message: "Hi, there!"
return 0;
}
Salida
Hello, Tutorialspoint Learner Hi, there!
Explicación
- Una función imprimirMensaje() se crea, proporcionando un parámetro con el valor predeterminado "Hola, alumno de Tutorialspoint".
- Ahora en main(), printMessage() La función se llama sin ningún argumento, por lo que se utiliza el argumento predeterminado "Hola, alumno de Tutorialspoint".
- mientras que en printMessage("¡Hola!") , pasamos explícitamente el valor "¡Hola!" entonces esto anulará el argumento predeterminado.
Constructor con múltiples argumentos predeterminados
Un constructor con múltiples argumentos predeterminados le da al usuario acceso para especificar valores predeterminados para más de un parámetro. Esto proporciona más flexibilidad y acceso para pasar cualquier combinación de argumentos.
Ejemplo
A continuación se muestra el siguiente ejemplo de constructor con múltiples argumentos predeterminados:
#include <iostream>
using namespace std;
class Box {
public:
int length, width, height;
// Constructor with multiple default arguments
Box(int l = 5, int w = 10, int h = 2) { // Default values for length, width, and height
length = l;
width = w;
height = h;
}
void display() {
cout << "Length: " << length << ", Width: " << width << ", Height: " << height << endl;
}
};
int main() {
// Creating objects with different numbers of arguments
Box box1;
Box box2(15);
Box box3(15, 20);
Box box4(15, 20, 25);
// Displaying the objects' values
box1.display();
box2.display();
box3.display();
box4.display();
return 0;
}
Salida
Length: 5, Width: 10, Height: 2 Length: 15, Width: 10, Height: 2 Length: 15, Width: 20, Height: 2 Length: 15, Width: 20, Height: 25
Explicación
- En primer lugar, el cuadro de clase se define con tres variables miembro públicas:largo y ancho, donde el constructor Box(int l =5, int w =10, int h =2) tiene argumentos predeterminados para los tres parámetros.
- En el objeto Cuadro cuadro1; no se proporciona ningún argumento, por lo que se llama al constructor predeterminado con valores predeterminados, lo que da como resultado "Largo:5, Ancho:10, Alto:2".
- En cuadro box2(15); El largo se proporciona como 15, pero el ancho y el alto no se proporcionan, por lo que utiliza los valores predeterminados respectivamente.
- En Caja box3(15, 20); El largo y el ancho se proporcionan con los valores 15 y 20 respectivamente, por lo que anulará los valores predeterminados y generará el resultado correspondiente.
Características clave de los constructores con argumentos predeterminados
Si bien es similar a las funciones normales, proporciona más flexibilidad y comodidad al crear objetos.
A continuación, analizaremos todas sus características clave.
1. Valores predeterminados para parámetros y flexibilidad en la creación de objetos
Aquí el constructor puede tener valores predeterminados para uno o más parámetros, que se pueden usar cuando la persona que llama no proporciona ningún argumento y permite múltiples formas de crear un objeto.
2. Evitar sobrecargas de múltiples constructores
Es posible que necesites cargar el constructor para cada combinación de argumentos, lo que hará que el código sea más voluminoso, pero con los argumentos predeterminados, el constructor se puede escribir una vez y manejará diferentes casos automáticamente.
3. Orden de los argumentos predeterminados
En el caso de múltiples parámetros de valor predeterminado, no puede omitir los argumentos predeterminados en el medio una vez que comience a proporcionar los valores predeterminados desde la derecha.
Sintaxis
Box(int l = 1, int w); // Invalid: 'w' has no default, but 'l' does.
4. Los argumentos predeterminados se pueden utilizar con miembros constantes
Si su clase tiene miembros constantes, entonces se pueden proporcionar argumentos predeterminados en el constructor para facilitar la inicialización.
Sintaxis
class Box {
public:
const int length, width;
Box(int l = 5, int w = 10) : length(l), width(w) {}
};
Este constructor utiliza argumentos predeterminados (largo =5 y ancho =10) para inicializar los miembros constantes.
Lenguaje C
- Dominar los punteros de caracteres y el uso de funciones en C
- Las 50 principales preguntas y respuestas de entrevistas de C# para experimentados y principiantes (actualización de 2021)
- C enums
- 30 preguntas y respuestas esenciales de la entrevista Objective-C (Guía 2026)
- C# - Códigos no seguros
- Asociatividad y precedencia de operadores de C#
- Funciones de biblioteca estándar de C
- Plantillas de clase de C++
- Matrices C
- Manejo de señales C++
- Más de 20 mejores IDE de C para Windows, Mac y Linux (editores de 2021)