Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guia 5 de Laboratorio Daniel

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

U.T.O. – F.N.I. ING. DE SISTEMAS – ING.

INFORMÁTICA
SIS – 2210 METODOLOGÍA DE LA PROGRAMACIÓN II

GUIA DE LABORATORIO#

FUNCIONES - PARÁMETROS POR REFERENCIA


LOGROS A ALCANZAR

 Definir nuevos objetos en C++, basados en clases


 Comunicar dos o más objetos diferentes
PROBLEMAS PROPUESTOS
1. Realizar 2 ejemplos de clases que apliquen constructores y destructores.
#include <iostream>
#include <string>
class Persona {
private:
std::string nombre;
int edad;
public:
Persona(std::string n, int e) : nombre(n), edad(e) {
std::cout << "Constructor: Se ha creado la persona " << nombre << " de edad " << edad << "." << std::endl;
}
~Persona() {
std::cout << "Destructor: Se ha destruido la persona " << nombre << "." << std::endl;
}
void mostrarInformacion() {
std::cout << "Nombre: " << nombre << ", Edad: " << edad << std::endl;
}
};
int main() {
Persona persona1("Juan", 30);
persona1.mostrarInformacion();
return 0;
}

Ejemplo 2:

Ing. Wilfredo Mita Choque 1


U.T.O. – F.N.I. ING. DE SISTEMAS – ING. INFORMÁTICA
SIS – 2210 METODOLOGÍA DE LA PROGRAMACIÓN II

#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).

Ing. Wilfredo Mita Choque 2


U.T.O. – F.N.I. ING. DE SISTEMAS – ING. INFORMÁTICA
SIS – 2210 METODOLOGÍA DE LA PROGRAMACIÓN II

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

Ing. Wilfredo Mita Choque 3

También podría gustarte