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

destructor, clases c++

Estas en el tema de destructor, clases c++ en el foro de C/C++ en Foros del Web. Hola.Miren tengo el siguiente programa en el cual me pide N numero de alumnos,de los cuales tiene que pedir tres calificaciones,nombre y boleta.El programa ya ...
  #1 (permalink)  
Antiguo 05/10/2011, 02:27
 
Fecha de Ingreso: septiembre-2011
Ubicación: Mexico D.F
Mensajes: 10
Antigüedad: 12 años, 8 meses
Puntos: 0
destructor, clases c++

Hola.Miren tengo el siguiente programa en el cual me pide N numero de alumnos,de los cuales tiene que pedir tres calificaciones,nombre y boleta.El programa ya esta hecho pero, lo que no se es que se debe poner en el destructor.Se que se debo poner delete pero ¿delete que? Gracias


#include <iostream>
#include <string>
#define n 3
using namespace std;

class calumno{
private:
double calif[n];
string nombre,boleta;


public:
calumno(double calif[n]);
~calumno();
void captura();
string capturacad(string msj);
double calculaprom();
void imprimir();
calumno();


};

calumno::calumno()
{
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?



}

string calumno::capturacad(string msj)
{
string texto;
fflush(stdin);
cout<<msj;
getline(cin,texto);
return texto;
}



void calumno::captura()
{

nombre=capturacad("Captura la nombre:");
boleta=capturacad("Captura boleta:");

for(int j=0;j<n;j++)
{
cout<<"Captura la calificacion "<<j+1<<":"<<endl;
cin>>calif[j];
}

}

double calumno::calculaprom()
{
float a=0;
int i;
for(i=0;i<n;i++)
{
a+=calif[i];
}
a=a/n;
return a;
}



void calumno::imprimir()
{

for(int z=0;z<n;z++)
{
cout<<"calificacion "<<z+1<<":"<<calif[z]<<endl;

}

cout<<"Promedio:"<<calculaprom()<<endl;
cout<<"Boleta:"<<boleta<<endl;
cout<<"Nombre:"<<nombre<<endl;

}

calumno::~calumno()

{
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?
AQUI ¿QUE ES LO QUE DEBO PONER?



}



int main()
{
int t;
calumno *aptro;

cout<<"Indica el numero de alumos:"<<endl;
cin>>t;
if(t>0&&t<=10)
{
aptro=new calumno[n];

for(int p=0;p<t;p++)
{

aptro->captura();


}

system("CLS");
for(int p=0;p<t;p++)
{
aptro->imprimir();

}

delete []aptro;
system("pause");
}

else{
cout<<"Error en la creacion de memoria dinamica"<<endl;
system("pause");
}
return 1;
}
  #2 (permalink)  
Antiguo 13/10/2011, 20:37
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: destructor, clases c++

Depende del compilador, pero si no me equivoco por ejemplo ejemplo en el MinGW32, debe quedar vacío, el compilador lo hace por si solo.
  #3 (permalink)  
Antiguo 13/10/2011, 21:18
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: destructor, clases c++

En este ejemplo no debes poner nada. No tienes ninguna memoria reservada por ti, que el compilador no sepa si liberar o no. Por lo general, si haces new dentro de la clases debes usar delete dentro del destructor para libeerar esa memoria pedida y que no quede dando vuelta. Saludos
  #4 (permalink)  
Antiguo 17/10/2011, 20:01
Avatar de latinpower  
Fecha de Ingreso: septiembre-2010
Ubicación: Canelones
Mensajes: 116
Antigüedad: 13 años, 7 meses
Puntos: 10
Respuesta: destructor, clases c++

Cita:
Iniciado por sam90 Ver Mensaje
En este ejemplo no debes poner nada. No tienes ninguna memoria reservada por ti, que el compilador no sepa si liberar o no. Por lo general, si haces new dentro de la clases debes usar delete dentro del destructor para libeerar esa memoria pedida y que no quede dando vuelta. Saludos
que pasa si el new se hace dentro de un método y no se borra dentro del mismo, queda flotanto también?
  #5 (permalink)  
Antiguo 17/10/2011, 20:23
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: destructor, clases c++

Si no gardas el puntero que devuelve new, efectivamente perdes la referencia de esa instancia y va a quedar flotando.

Etiquetas: c++, clases, destructor
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 02:50.