LIBRERIAS
EN C++< Iosfwd>
INTRODUCCIÓN
Junto con los compiladores de C y C++, se
incluyen ciertos archivos llamados bibliotecas mas comúnmente librerías. Las
bibliotecas contienen el código objeto de muchos programas que permiten hacer
cosas comunes, como leer el teclado, escribir en la pantalla, manejar números,
realizar funciones matemáticas, etc.
Las bibliotecas están
clasificadas por el tipo de trabajos que hacen, hay bibliotecas de entrada y
salida, matemáticas, de manejo de memoria, de manejo de textos y como
imaginarás existen muchísimas librerías disponibles y todas con una función
especifica.
OBJETIVOS
Las librearías son archivos (no siempre
externos) que nos permiten llevar a cabo diferentes tareas sin necesidad de
preocuparnos por cómo se hacen sino simplemente entender cómo usarlas. Las
librearías en C++ permiten hacer nuestros programas más modulares y
reutilizables, facilitando además crear programas con funcionalidades bastante
complejas en unas pocas líneas de código.
MARCO TEÓRICO
¿Qué
son exactamente las librerías?
En C++, se conoce
como librerías (o bibliotecas) a cierto tipo de archivos que podemos importar o
incluir en nuestro programa. Estos archivos contienen las especificaciones de
diferentes funcionalidades ya construidas y utilizables que podremos agregar a
nuestro programa, como por ejemplo leer del teclado o mostrar algo por pantalla
entre muchas otras más.
Al poder incluir
estas librerías con definiciones de diferentes funcionalidades podremos
ahorrarnos gran cantidad de cosas, imaginemos por ejemplo que cada vez que
necesitemos leer por teclado, debamos entonces crear una función que lo haga
(algo realmente complejo), al poder contar con las librerías en C++, podremos
hacer uso de una gran variedad de funciones que nos facilitaran la vida y
aumentarán la modularidad de nuestros códigos.
Las librerías no son
únicamente archivos externos creados por otros, también es posible crear
nuestras propias librerías y utilizarlas en nuestros programas. Las librerías
pueden tener varias extensiones diferentes, las más comunes son: .lib, .bpl,
.a, .dll, .h y algunas más ya no tan comunes.
CONCEPTO DE<
Iosfwd>
Contiene declaraciones adelantadas de todas
las plantillas de flujos y sus typedefs estándar. Por ejemplo ostream.
La
librería estándar de C++ ofrece un archivo de cabecera de forward
declarations de las clases de entrada y salida a flujos de
bytes (iostreams):
#include <iosfwd>
De esta
forma podemos utilizar los tipos ostream, istream, etc. sin necesidad de traer
la definición de todas las clases de entrada y salida. Generalmente deberíamos
utilizar el <iosfwd> en
nuestro .h cuando no hagamos un mayor uso que sólo referenciarlas. Un ejemplo:
#ifndef EMPLEADO_IO_H
#define EMPLEADO_IO_H
#include <iosfwd> // forward declaration de ostream
class Empleado; // forward declaration de nuestro tipo
// Aquí no necesitamos conocer el tamaño ni de Empleado,
// ni de ostream, podemos compilar sólo con sus forward
// declarations.
void write_empleado_en_formato_binario(const Empleado&, ostream&);
#endif
#define EMPLEADO_IO_H
#include <iosfwd> // forward declaration de ostream
class Empleado; // forward declaration de nuestro tipo
// Aquí no necesitamos conocer el tamaño ni de Empleado,
// ni de ostream, podemos compilar sólo con sus forward
// declarations.
void write_empleado_en_formato_binario(const Empleado&, ostream&);
#endif
Regla: Siempre intenta usar las forward
declarations antes que incluir los archivos de cabecera que definen
las clases, los cuales suelen mostrar detalles de implementación que son
propensos a cambiar. Siguiendo esta regla mejoraremos el tiempo de compilación
y la cantidad de archivos a compilar al realizar una modificación en un .h.
Para más información, ver la
sección 27.3 Forward declarations [iostream.forward] del último
borrador público del estándar de C++
CONCLUSIÓN
Existe
una discusión sobre el nombre de estos archivos. Muchos personas consideran que
el nombre adecuado es archivos de biblioteca, y están en lo correcto. Sin
embargo, la mayoría llamamos a estos archivos librerías, y también me incluyo
entre estos. El error proviene del nombre en inglés, que es library. Este
término se traduce como biblioteca, y no como librería. De este modo a lo largo
de esta sección las llamaré de cualquiera de las dos formas, para estar mas
claros.
No hay comentarios:
Publicar un comentario