Back
Close

Miembros Especiales de la Clase en C++ (Práctica 2)

camilocorreaUdeA
1,860 views

Destructor

El destructor es un método de la clase que se usa para destruir objetos del tipo de la clase, no tiene parámetros de entrada ni valor de retorno. Para declarar un destructor se utiliza el caracter virgulilla (~) seguido del nombre la clase, es decir, el destructor también se denomina del mismo modo que la clase. Los destructores se ejecutan automáticamente justo cuando un objeto alcanza el límite de su tiempo de vida. Ese tiempo de vida está definido por el contexto (scope) donde se ha declarado el objeto. Recuerde que un contexto (scope) está delimitado en C++ por las llaves { y }. El tiempo de vida para un objeto de almacenamiento estático es de toda la ejecución del programa. Mientras que el tiempo de vida de un objeto de almacenamiento automático depende enteramente de su contexto, si es global o local.

class NewClass
{
	public:
	~NewClass(); //Declaración del destructor de la clase
};

NewClass::~NewClass(){} //Definición del destructor de la clase

Los destructores son especialmente útiles para destruir objetos de almacenamiento dinámico, es decir, aquellos para los que se reserva memoria con ayuda de un apuntador y el operador new. Ese tema se verá más adelante cuando se estudie el manejo dinámico de memoria en C++. En el siguiente ejemplo se puede observar la ejecución del destructor de una clase.

#include<iostream>
using namespace std;
class NewClass
{
int x;
public:
NewClass(int _x):x(_x){}
~NewClass();
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

A ver que aprendimos...

¿Qué secuencia de números imprime en pantalla el siguiente programa?
#include<iostream>
using namespace std;

class NewClass
{
	int x;
	public:
	NewClass(int _x):x(_x){cout<<x;}
	~NewClass();
};

NewClass::~NewClass(){cout<<"8";} 

NewClass obj1(1); 

int main()
{
	cout<<"1";;
	NewClass obj2(2); 
	cout<<"2";;
	{
		NewClass obj3(3); 
		cout<<"3";
        {
           NewClass obj5(5); 
        }
		NewClass obj4(4); 
		cout<<"4";;		
	}
	cout<<"5";
	NewClass obj5(5); 
	cout<<"6";
	return 0;
}
Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io
codingame x discord
Join the CodinGame community on Discord to chat about puzzle contributions, challenges, streams, blog articles - all that good stuff!
JOIN US ON DISCORD
Online Participants