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

camilocorreaUdeA
109.6K views

Open Source Your Knowledge, Become a Contributor

Technology knowledge has to be shared and made accessible for free. Join the movement.

Create Content

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.

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;
}
Open Source Your Knowledge: become a Contributor and help others learn. Create New Content