25/07/2011, 19:43
|
| | Fecha de Ingreso: junio-2008 Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 7 meses Puntos: 61 | |
Respuesta: Archivos de cabezera? interfaces? Una correccion,
Es completamente posible tener la implementacion de metodos dentro de la declaracion de una clase.
El compilador no tendrá problema en que 2 modulos distintos hagan #include de un archivo .h que tenga una clase con algún método implementado dentro (e.g. la STL).
Distinto es tener una función con scope global. En ese caso, si aun se desea poner una función dentro de un archivo .h, es necesario agregar que ella sea "static", para que no sea exportada afuera de cada modulo y aparezca el error de link que se mostró previamente.
El no poner código en los archivos .h, creo yo, se debe a que presenta una desventaja pues existe una enorme pérdida de tiempo respecto a separar los prototipos + implementación en archivo .cpp, debido a que cada vez que se haga #include, se chequeará / compilará la implementación, y eventualmente se haga el mismo proceso varias veces. Mover la implementación fuera evitará esa repetición.
Algunos compiladores tienen la habilidad de precompilar los archivos .h y no seria tan notoria la repeticion de ese proceso, pero requerira espacio en disco para guardar archivos pre-compilados.
El compilar es intensivo en recursos, no quieres hacerlo a cada rato o hacerlo con todo el código todas las veces, especialmente si no has cambiado nada. |