[ Foro de C++ ]

que indica la funcion miembro...?

31-Jul-2011 15:19
oscar gomez
1 Respuestas

cordial saludo profesor Nacho,y mil gracias por atendernos.

profesor queria preguntarte por la siguiente funcion miembro de una clase tiempo, que la verdad en sus espresiones poco entiendo lo que hace:***********

tiempo::tiempo(){hora=minuto=segundo=0;}

void tiempo::sethora(int h,int m , int s) ***************
{
 hora=(h>=0 && h<24)? h:0;
 minuto=(m>=0 && m<60)? m:0;
 segundo=(s>=0 && a<60)?:0;
}


la clase tiempo esta definida asi:


class tiempo
{
  public:
         tiempo();
         void imprimeUniversal();
         void imprimeEstandar();
  private:
         int hora;
         int minuto;
         int segundo;
};



ahora una segunda pregunta que tengo duda es en el siguiente concepto:
"los datos miembros deben inicializarse en el constructor de la clase.DE NO SER ASI HABRA QUE ESPECIFICAR SUS VALORES DESPUES DE CREAR EL OBJETO. me podrias esplicar esto en un ejemplo por favor para poderlo entender, mil gracias profesor Nacho por tu valiosa ayuda, tiempo y paciencia admirable.




08-Aug-2011 12:24
Nacho Cabanes (+30)

Esa función usa el "operador condicional". Puedes leer más en el apartado 3.1.9 del curso de C:

http://www.aprendeaprogramar.com/mod/resource/view.php?id=319

Una orden como

hora=(h>=0 && h<24)? h:0;

equivale a

if (h>=0 && h<24)hora = h; else hora = 0;

En cuanto a la frase "los datos miembros deben inicializarse en el constructor de la clase.DE NO SER ASI HABRA QUE ESPECIFICAR SUS VALORES DESPUES DE CREAR EL OBJETO."

Se refiere a que hay dos formas de dar valores a los atributos (datos miembro): o bien usas un constructor vacío y les das valores después:

momento = new tiempo();
momento.fijarHora(15);
momento.fijarMinuto(30);

o bien creas un constructor capaz de recibir todos esos valores, y así no tienes que darlos después:

momento = new tiempo(15, 30, 0);






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)