-
HISTORIA C++
C++ es un lenguaje de programación diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender al lenguaje de programación C mecanismos que permiten la manipulación de objetos. En ese sentido, desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje híbrido. -
CARACTERISTICAS
Posteriormente se añadieron facilidades de programación genérica, que se sumaron a los paradigmas de programación estructurada y programación orientada a objetos. Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma. Actualmente existe un estándar, denominado ISO C++, al que se han adherido la mayoría de los fabricantes de compiladores más modernos. Existen también algunos intérpretes, tales como ROOT. Una particularidad del C++ es la posibilidad de redefinir los op -
CREADOR
El nombre C++ fue propuesto por Rick Mascitti en el año 1983, cuando el lenguaje fue utilizado por primera vez fuera de un laboratorio científico. Antes se había usado el nombre "C con clases". En C++, la expresión "C++" significa "incremento de C" y se refiere a que C++ es una extensión de C. -
EJEMPLO DE CODIGO C++
/* Esta cabecera permite usar los objetos que encapsulan los descriptores stdout
y stdin: cout(<<) y cin(>>)*/ include <iostream> using namespace std; int main()
{
cout << "Hola mundo" << endl;
cin.get();
}
Al usar la directiva #include se le dice al compilador que busque e interprete todos los elementos definidos en el archivo que acompaña la directiva (en este caso, iostream). Para evitar sobrescribir los elementos ya definidos al ponerles igual nombre, se crearon los espacios de nom -
TIPOS DE DATOS
C++ tiene los siguientes tipos fundamentales: Caracteres: char (también es un entero), wchar_t
Enteros: short, int, long, long long
Números en coma flotante: float, double, long double
Booleanos: bool
Vacío: void
El modificador unsigned se puede aplicar a enteros para obtener números sin signo (por omisión los enteros contienen signo), con lo que se consigue un rango mayor de números naturales. -
VERSIONES
Para la versión del estándar que se publicó en 1998, se decidió añadir el tipo de dato wchar_t, que permite el uso de caracteres UNICODE, a diferencia del tradicional char, que contempla simplemente al código de caracteres ASCII extendido. A su vez, se ha definido para la mayoría de las funciones y clases, tanto de C como de C++, una versión para trabajar con wchar_t, donde usualmente se prefija el carácter w al nombre de la función (en ocasiones el carácter es un infijo). Por ejemplo: strcpy - -
TAMAÑOS ASOCIADOS CON C++
C++ no dice nada acerca de cuál es el número de bits en un byte, ni del tamaño de estos tipos; más bien, ofrece solamente las siguientes "garantías de tipos": De acuerdo al estándar C99, un tipo char debe ocupar exactamente un byte compuesto de un mínimo de 8 bits independientemente de la arquitectura de la máquina.
El tamaño reconocido de char es de 1. Es decir, sizeof(char) siempre devuelve 1.
Un tipo short tiene al menos el mismo tamaño que un tipo char.
Un tipo long tiene al menos el doble -
ETIQUETAS
La palabra reservada void define en C++ el concepto de no existencia o no atribución de un tipo en una variable o declaración. Es decir, una función declarada como void no devolverá ningún valor. Esta palabra reservada también puede usarse para indicar que una función no recibe parámetros, como en la siguiente declaración: int funcion (void);
Aunque la tendencia actual es la de no colocar la palabra "void". Además se utiliza para determinar que una función no retorna un valor, como en: void f -
ETIQUETA NULL
Además de los valores que pueden tomar los tipos anteriormente mencionados, existe un valor llamado NULL, sea el caso numérico para los enteros, caracter para el tipo char, cadena de texto para el tipo string, etc. El valor NULL, expresa, por lo regular, la representación de una Macro, asignada al valor "0". Tenemos entonces que: void* puntero = NULL;
int entero = NULL;
bool boleana = NULL;
char caracter = NULL;
El valor de las variables anteriores nos daría 0. A diferencia de la variable "car -
PRINCIPIOS DE C++
Todo programa en C++ debe tener la función principal main() (a no ser que se especifique en tiempo de compilación otro punto de entrada, que en realidad es la función que tiene el main()) int main()
{}
La función principal del código fuente main debe tener uno de los siguientes prototipos:
int main()
int main(int argc, char** argv) Aunque no es estándar algunas implementaciones permiten
int main(int argc, char** argv, char** env) La primera es la forma por omisión de un programa que no recibe -
CONCEPTOS EN CLASE
Los objetos en C++ son abstraídos mediante una clase. Según el paradigma de la programación orientada a objetos un objeto consta de: Identidad, que lo diferencia de otros objetos (Nombre que llevara la clase a la que pertenece dicho objeto).
Métodos o funciones miembro
Atributos o variables miembro
Un ejemplo de clase que podemos tomar es la clase perro. Cada perro comparte unas características (atributos). Su número de patas, el color de su pelaje o su tamaño son algunos de sus atributos. Las -
CONSTRUCTOR PREDETERMINADO
En su declaración no se especifica el tipo de dato que devuelven, y poseen el mismo nombre que la clase a la que pertenecen. Al igual que otros métodos, puede haber varios constructores sobrecargados, aunque no pueden existir constructores virtuales. Como característica especial a la hora de implementar un constructor, justo después de la declaración de los parámetros, se encuentra lo que se llama "lista de inicializadores -
CONSTRUCTOR DE COPIA
Constructor de copia. Es un constructor que recibe un objeto de la misma clase, y realiza una copia de los atributos del mismo. Al igual que el predeterminado, si no se define, el sistema proporciona uno. -
TIPOS DE CONSTRUCTORES
Constructor predeterminado. Es el constructor que no recibe ningún parámetro en la función. Si no se definiera ningún constructor, el sistema proporcionaría uno predeterminado. Es necesario para la construcción de estructuras y contenedores de la STL. -
CONSTRUCTORES + MEMORIA HEAP
Constructores + Memoria heap Un objeto creado de la forma que se vio hasta ahora, es un objeto que vive dentro del scope(las llaves { }) en el que fue creado. Para que un objeto pueda seguir viviendo cuando se saque de el scope en el que se creó, se lo debe crear en memoria heap. Para esto, se utiliza el operador new, el cual asigna memoria para almacenar al objeto creado, y además llama a su constructor(por lo que se le pueden enviar parámetros). -
TAMAÑO DINAMICO
Punto *asignar(int cuantos) {
return new Punto[cuantos]; //asigna un array de 'cuantos' puntos(se llama el constructor que se muestra más arriba), y se retorna.
} -
EJEMPLO DE CONSTRUCTORES
int main() {
Punto *unPunto = new Punto(); //esto llama al constructor que se describe más arriba
delete unPunto; //no hay que olvidarse de liberar la memoria ocupada por el objeto(ver la sección destructores, más abajo)
return 0;
} -
DESCTUCTORES
Los destructores son funciones miembro especiales llamadas automáticamente en la ejecución del programa, y por tanto no tienen por qué ser llamadas explícitamente por el programador -
COMETIDOS DE LOS DESTRUCTORES
Liberar los recursos computacionales que el objeto de dicha clase haya adquirido en tiempo de ejecución al expirar éste.
Quitar los vínculos que pudiesen tener otros recursos u objetos con éste. -
RECIENTEMENTE
Última versión estable ISO/IEC 14882:2011 (2011) Última versión en pruebas C++14 (2014) -
AVANCES DE C++
Dialectos ISO/IEC C++ 1998, ISO/IEC C++ 2003, ISO/IEC C++ 2011
Influido por C, Simula, Ada 83, ALGOL 68, CLU, ML1
Ha influido a Perl, LPC, Lua, Pike, Ada 95, Java, PHP, D, C99, C#, Falcon
Sistema operativo Multiplataforma -
TIPOS E IMPLEMENTEACIONES
Tipo de dato.
Fuerte, estático, nominativo. Implementaciones.
C++ Builder, clang, Comeau C/C++, GCC, Intel C++ Compiler, Microsoft Visual C++, Sun Studio, Code::Blocks, Zinjai.