Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/02/2013, 08:26
amchacon
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 9 meses
Puntos: 28
Respuesta: funciones en c++ modo de declarar

Cita:
Iniciado por nightwalkervampire Ver Mensaje
funciona de maravilla ahora las dudas que tengo son, por que muestran que se pueden declarar funciones sin datos de retorno?, por que si ya declare las funciones prototipos con su retorno de dato en este caso int, por que debo declarar el dato de retorno int nuevamente?, por que si se esta declarando las funciones antes de el main() igual arroja error al momento de compilar como en el segundo caso?

les agradecería toda la ayuda que puedan brindar y recomendaciones
Antes todo, tengo que decirte que C++ tiene una sintaxis muy rígida y estricta. Aunque todo tiene sus explicaciones.

Las funciones sin retorno deben ir precedidas por void:

Código C++:
Ver original
  1. void MiFuncion();

De lo contrario, el compilador interpetraría que intentas llamar a la función:
Código C++:
Ver original
  1. MiFuncion(); // Error, esta funcion no existe

Podrías pensar que las llaves al declarar son un factor indicativo, pero tampoco lo es. Ten en cuenta que se pueden poner llaves sueltas para indicar bloques de código independientes:

Código C++:
Ver original
  1. MiFuncion() // El compilador llamara a MiFuncion
  2. { // Se ha abierto un bloque de codigo independiente
  3.  
  4. }

En cuanto a la siguienta pregunta: ¿Por que tengo que poner el retorno tanto en la declaración como en la implementación? Pues por la misma razón anterior, el compilador tiene que saber de alguna manera que lo estas poniendo es una declaración de función y no una llamada con un bloque de código posterior.

Código C++:
Ver original
  1. por que si se esta declarando las funciones antes de el main() igual arroja error al momento de compilar como en el segundo caso?
Pues porque Option() no había sido declarada en el momento que se llamó.

Es una regla un poco estricta, pero la filosofía de C++ es que todo dato que se use debe declararse previamente. Gracias a esta regla los compiladores pueden trabajar mucho más rápido (de lo contrario tendrían que hacer varias pasadas al código para ir rellenando las llamadas a funciones sin declarar).

Última edición por amchacon; 12/02/2013 a las 08:49