Guia 5 de Laboratorio Daniel
Guia 5 de Laboratorio Daniel
Guia 5 de Laboratorio Daniel
INFORMÁTICA
SIS – 2210 METODOLOGÍA DE LA PROGRAMACIÓN II
GUIA DE LABORATORIO#
Ejemplo 2:
#include <iostream>
#include <string>
class Producto {
private:
std::string nombre;
double precio;
public:
Producto(std::string n, double p) : nombre(n), precio(p) {
std::cout << "Constructor: Se ha creado el producto " << nombre << " con precio $" << precio << "."
<< std::endl;
}
~Producto() {
std::cout << "Destructor: Se ha destruido el producto " << nombre << "." << std::endl;
}
void mostrarInformacion() {
std::cout << "Producto: " << nombre << ", Precio: $" << precio << std::endl;
}
};
int main() {
Producto producto1("Laptop", 1200.99); // Se llama al constructor
producto1.mostrarInformacion();
return 0;
}
CUESTIONARIO
Responder a lo siguiente:
1. ¿Los constructores son funciones void?, ¿por qué?
No, los constructores no son funciones void. En C++, los constructores no tienen un tipo de retorno, ni siquiera
void. Su propósito es inicializar objetos de una clase, y no devuelven ningún valor. Se invocan automáticamente
cuando se crea un objeto y no se pueden llamar explícitamente como funciones normales.
2. ¿Se pueden heredar los constructores? ¿Por qué?
En C++11 y versiones posteriores, los constructores no se heredan de forma automática. Sin embargo, se pueden
invocar explicitamente en la subclase utilizando la lista de inicialización del constructor de la subclase. La razón
es que los constructores están diseñados para inicializar objetos de su propia clase, y cada clase puede tener
diferentes requisitos de inicialización.
3. ¿Cuáles son los tipos de constructores?
Los tipos de constructores en C++ son:
Constructor por defecto: No toma parámetros y se utiliza para crear un objeto sin inicializar atributos de forma
específica.
Constructor parametrizado: Toma uno o más parámetros para inicializar los atributos del objeto.
Constructor de copia: Se utiliza para crear un nuevo objeto como copia de otro objeto existente. Se define como:
Clase(const Clase &objeto).
Constructor de movimiento (C++11 en adelante): Se utiliza para transferir recursos de un objeto temporal a otro,
evitando la copia. Se define como: Clase(Clase &&objeto).
4. ¿Se pueden heredar los destructores? ¿Por qué?
Los destructores se pueden declarar en una clase base y se heredarán en las clases derivadas, pero no se pueden
utilizar directamente. La razón es que cada clase debe encargarse de la limpieza de sus propios recursos. Es
importante que si una clase base tiene un destructor virtual, se garantiza que el destructor de la clase derivada
se llamará correctamente al destruir un objeto de la clase derivada. Esto es fundamental para evitar fugas de
memoria y asegurar una correcta liberación de recursos