Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Destructor de objeto

Estas en el tema de Destructor de objeto en el foro de C/C++ en Foros del Web. Hola estoy empezando con c++ y tengo entendido que no es como java que automaticamente elimina los objetos cuando no se usan mas bueno quisiera ...
  #1 (permalink)  
Antiguo 21/01/2011, 10:13
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Destructor de objeto

Hola estoy empezando con c++ y tengo entendido que no es como java que automaticamente elimina los objetos cuando no se usan mas bueno quisiera saber como programarlos por ejemplo aqui tengo este ejercicio :
Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4.  
  5. class Practica
  6. {
  7. private:
  8.     string saludo;
  9.     int x;
  10.  
  11. public:
  12.     Practica();
  13.     int getX();
  14.     string getSaludo();
  15.     void setX(int);
  16.     void setSaludo(string);
  17. };
  18. //Constructor
  19. Practica::Practica(){}
  20.  
  21.  
  22. void Practica::setSaludo(string saludo){ cout << "Hola "<< saludo << endl; }
  23. string Practica::getSaludo(){ return saludo; }
  24. void Practica::setX(int x){ cout << "El numero es: " << x << endl; }
  25. int Practica::getX(){ return x; }
  26.  
  27. int main()
  28. {
  29.     Practica pra = Practica();
  30.     int y ;
  31.     string nombre = "";
  32.  
  33.     cout << "Ingrese el nombre: " ;
  34.     cin >> nombre;
  35.    
  36.     cout << "\nIngrese el numero: " ;
  37.     cin >> y;
  38.  
  39.     pra.setSaludo(nombre);
  40.     pra.setX(y);
  41.  
  42.     pra.getSaludo();
  43.     pra.getX();
  44.  
  45.     system("pause");
  46. }

alguien seria tan amable de editar ese codigo para mostrarme como programar un destructor ?? gracias
  #2 (permalink)  
Antiguo 21/01/2011, 10:34
 
Fecha de Ingreso: enero-2008
Mensajes: 229
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Destructor de objeto

los destructores no necesarios almenos que utilices punteros. ya que la memoria almacenada por estos no es destruida de manera automatica. asi supongamos que lugar de que nombre fuera de tipo string fuera de tipo char*. Cabe destacar algunos comentarios cuando declares una clase acostumbrate a anteponerle una C, en tu caso el nombre de la clase sería CPractica, cuando declares un atributo, que sea privado anteponle un _, en tu caso _saludo,

Practica::Practica():saludo(NULL){}

void Practica::setSaludo(string strSaludo)
{ cout << "Hola "<< saludo << endl;

if(saludo)
delete [] saludo;

saludo = new char[strSaludo.size()+1];
strcpy(saludo, strSaludo.c_str());
}

Practica::~Practica
{
if(saludo!=NULL)
delete saludo;
}

a diferencia de java no es necesario
Practica pra = Practica();

solo

Practica pra;

ya que de esta forma se manda a llamar al constructor por default

otra cosa solo pon en la función lo que tenga que hacer. por ej. en tu método setSaludo, mandas a llamar a cout, pero por el nombre de tu método uno supondría que vas a establecer el saludo.
  #3 (permalink)  
Antiguo 21/01/2011, 10:38
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: Destructor de objeto

muchas gracias por tu respuesta margarito

Etiquetas: objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.