Anda di halaman 1dari 4

C++ es un lenguaje de programaci�n dise�ado en 1979 por Bjarne Stroustrup.

La
intenci�n de su creaci�n fue 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.

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 operadores, y de


poder crear nuevos tipos que se comporten como tipos fundamentales.

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.

�ndice
1 Ejemplos
2 Tipos de datos
2.1 Tama�os asociados
2.2 Wchar_t
2.3 La palabra reservada "void"
2.4 La palabra "NULL"
3 Principios
4 El concepto de clase
4.1 Constructores
4.2 Destructores
4.3 Funciones miembro
4.4 Plantillas
4.4.1 Especializaci�n
4.5 Clases abstractas
4.6 Espacios de nombres
4.7 Herencia
4.7.1 Herencia simple
4.7.2 Herencia m�ltiple
4.8 Sobrecarga de operadores
5 Standard Template Library (STL)
6 Biblioteca de entrada y salida
6.1 Fstreams
6.2 Sstreams
6.3 Contenedores
6.4 Iteradores
6.5 Algoritmos
7 C++11
8 Actualidad y futuro
9 Diferencias de tipos respecto a C
10 Compiladores
11 Ejemplo: Cmd con colores
11.1 Uso
12 Entornos de desarrollo
12.1 Bajo Microsoft Windows
12.2 Bajo MacOS
12.3 Bajo DOS
12.4 Bajo GNU/Linux
13 Cr�ticas
14 V�ase tambi�n
15 Referencias
15.1 Bibliograf�a
16 Enlaces externos
Ejemplos
A continuaci�n se cita un programa de ejemplo Hola mundo escrito en 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;
return 0;
}
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 nombres o namespace del singular en
ingl�s. En este caso hay un espacio de nombres llamado std, que es donde se
incluyen las definiciones de todas las funciones y clases que conforman la
biblioteca est�ndar de C++. Al incluir la sentencia using namespace std le estamos
diciendo al compilador que usaremos el espacio de nombres std por lo que no
tendremos que incluirlo cuando usemos elementos de este espacio de nombres, como
pueden ser los objetos cout y cin, que representan el flujo de salida est�ndar
(t�picamente la pantalla o una ventana de texto) y el flujo de entrada est�ndar
(t�picamente el teclado).

La definici�n de funciones es igual que en C, salvo por la caracter�stica de que si


main no va a recoger argumentos, no tenemos por qu� pon�rselos, a diferencia de C,
donde hab�a que ponerlos expl�citamente, aunque no se fueran a usar. Queda solo
comentar que el s�mbolo << se conoce como operador de inserci�n, y grosso modo est�
enviando a cout lo que queremos mostrar por pantalla para que lo pinte, en este
caso la cadena "Hola mundo". El mismo operador << se puede usar varias veces en la
misma sentencia, de forma que gracias a esta caracter�stica podremos concatenar el
objeto endl al final, cuyo resultado ser� imprimir un retorno de l�nea.

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.

Tama�os asociados
Seg�n la m�quina y el compilador que se utilice los tipos primitivos pueden ocupar
un determinado tama�o en memoria. La siguiente lista ilustra el n�mero de bits que
ocupan los distintos tipos primitivos en la arquitectura x86.
Tama�os de tipos primitivos bajo i386 (GCC)
Tipo N�mero de bits
char 8
short 16
int 32
float 32
double 64
Otras arquitecturas pueden requerir distintos tama�os de tipos de datos primitivos.
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 tama�o en bytes que un tipo short.
Un tipo int tiene un tama�o entre el de short y el de long, ambos inclusive,
preferentemente el tama�o de un apuntador de memoria de la m�quina. Su valor m�ximo
es 2147488281, usando 32 bits.
Un tipo unsigned tiene el mismo tama�o que su versi�n signed.
Wchar_t
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 - wstrcpy
std::string - std::wstring
std::cout - std::wcout
Cabe resaltar que en C se define wchar_t como:

typedef unsigned short wchar_t;


Mientras que en C++ es en s� mismo un tipo de dato.

La palabra reservada "void"


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 funcion (int parametro);


Cabe destacar que void no es un tipo. Una funci�n como la declarada anteriormente
no puede retornar un valor por medio de return: la palabra clave va sola. No es
posible una declaraci�n del tipo:

void t; //Est� mal


En este sentido, void se comporta de forma ligeramente diferente a como lo hace en
C, especialmente en cuanto a su significado en declaraciones y prototipos de
funciones.
Sin embargo, la forma especial void * indica que el tipo de datos es un puntero.
Por ejemplo:

void *memoria;
Indica que memoria es un puntero a alguna parte, donde se guarda informaci�n de
alg�n tipo. El programador es responsable de definir estos "alg�n", eliminando toda
ambig�edad. Una ventaja de la declaraci�n "void *" es que puede representar a la
vez varios tipos de datos, dependiendo de la operaci�n de cast escogida. La memoria
que hemos apuntado en alguna parte, en el ejemplo anterior, bien podr�a almacenar
un entero, un flotante, una cadena de texto o un programa, o combinaciones de
estos. Es responsabilidad del programador recordar qu� tipo de datos hay y
garantizar el acceso adecuado.

La palabra "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, car�cter 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
"caracter", que nos dar�a el equivalente a NULL, '\0', para caracteres.

Principios
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 par�metros ni
argumentos. La segunda forma tiene dos par�metros: argc, un n�mero que describe el
n�mero de argumentos del programa (incluyendo el nombre del programa mismo), y
argv, un puntero a un array de punteros, de argc elementos, donde el elemento
argv[i] representa el i-�simo argumento entregado al programa. En el tercer caso se
a�ade la posibilidad de poder acceder a las variables de entorno de ejecuci�n de la
misma forma que se accede a los argumentos del programa, pero reflejados sobre la
variable env.

El tipo de retorno de main es un valor entero int. Al finalizar la funci�n main,


debe incluirse el valor de retorno (por ejemplo, return 0;, aunque el est�ndar
prev� solamente dos posibles valores de retorno: EXIT_SUCCESS y EXIT_FAILURE,
definidas en el archivo cstdlib), o salir por medio de la funci�n exit.
Alternativamente puede dejarse en blanco, en cuyo caso el compilador es responsable
de agregar la salida adecuada.

Anda mungkin juga menyukai