Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
C++
Desarrollador(es)
Informacin general
Apareci en 1983
C++ es un lenguaje de programacin diseado a mediados de los aos 1980 por Bjarne
Stroustrup. La intencin de su creacin fue el extender al lenguaje de
programacin C mecanismos que permiten la manipulacin de objetos. En ese sentido,
desde el punto de vista de los lenguajes orientados a objetos, el C++ es un lenguaje
hbrido.
Posteriormente se aadieron facilidades de programacin genrica, que se sumaron a los
paradigmas de programacin estructurada y programacin orientada a objetos. Por esto se
suele decir que el C++ es un lenguaje de programacin multiparadigma.
Actualmente existe un estndar, denominado ISO C++, al que se han adherido la mayora
de los fabricantes de compiladores ms modernos. Existen tambin algunos intrpretes,
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 ao 1983, cuando el lenguaje fue
utilizado por primera vez fuera de un laboratorio cientfico. Antes se haba usado el nombre
"C con clases". En C++, la expresin "C++" significa "incremento de C" y se refiere a que
C++ es una extensin de C.
ndice
[ocultar]
1Ejemplos
2Tipos de datos
o 2.1Tamaos asociados
o 2.2Wchar_t
o 2.3La palabra reservada "void"
o 2.4La palabra "NULL"
3Principios
4El concepto de clase
o 4.1Constructores
o 4.2Destructores
o 4.3Funciones miembro
o 4.4Plantillas
4.4.1Especializacin
o 4.5Clases abstractas
o 4.6Espacios de nombres
o 4.7Herencia
4.7.1Herencia simple
4.7.2Herencia mltiple
o 4.8Sobrecarga de operadores
5Standard Template Library (STL)
6Biblioteca de entrada y salida
o 6.1Fstreams
o 6.2Sstreams
o 6.3Contenedores
o 6.4Iteradores
o 6.5Algoritmos
7C++11
8Actualidad y futuro
9Diferencias de tipos respecto a C
10Compiladores
11Ejemplo: Cmd con colores
o 11.1Uso
12Entornos de desarrollo
o 12.1Bajo Microsoft Windows
o 12.2Bajo MacOS
o 12.3Bajo DOS
o 12.4Bajo GNU/Linux
13Crticas
14Vase tambin
15Referencias
o 15.1Bibliografa
16Enlaces externos
Ejemplos[editar]
A continuacin se cita un programa de ejemplo Hola mundo escrito en C++:
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 acompaa 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 ingls. 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 estndar 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 estndar (tpicamente la pantalla o una ventana de texto) y el flujo de
entrada estndar (tpicamente el teclado).
La definicin de funciones es igual que en C, salvo por la caracterstica de que si main no
va a recoger argumentos, no tenemos por qu ponrselos, a diferencia de C, donde haba
que ponerlos explcitamente, aunque no se fueran a usar. Queda solo comentar que el
smbolo << se conoce como operador de insercin, 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 caracterstica podremos concatenar el
objeto endl al final, cuyo resultado ser imprimir un retorno de lnea.
Por ltimo tomaremos una secuencia de caracteres del teclado hasta el retorno de lnea
(presionando ENTER), llamando al mtodo get del objeto cin .
Tipos de datos[editar]
C++ tiene los siguientes tipos fundamentales:
strcpy - wstrcpy
std::string - std::wstring
std::cout - std::wcout
Cabe destacar que void no es un tipo. Una funcin como la declarada anteriormente no
puede retornar un valor por medio de return: la palabra clave va sola. No es posible una
declaracin del tipo:
void *memoria;
Indica que memoria es un puntero a alguna parte, donde se guarda informacin de algn
tipo. El programador es responsable de definir estos "algn", eliminando toda ambigedad.
Una ventaja de la declaracin "void *" es que puede representar a la vez varios tipos de
datos, dependiendo de la operacin de cast escogida. La memoria que hemos apuntado
en alguna parte, en el ejemplo anterior, bien podra 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"[editar]
Adems de los valores que pueden tomar los tipos anteriormente mencionados, existe un
valor llamado NULL, sea el caso numrico para los enteros, carcter para el tipo char,
cadena de texto para el tipo string, etc. El valor NULL, expresa, por lo regular, la
representacin de una Macro, asignada al valor "0".
Tenemos entonces que:
El valor de las variables anteriores nos dara 0. A diferencia de la variable "caracter", que
nos dara el equivalente a NULL, '\0', para caracteres.
Principios[editar]
Todo programa en C++ debe tener la funcin principal main() (a no ser que se
especifique en tiempo de compilacin otro punto de entrada, que en realidad es la funcin
que tiene el main() )
int main()
{}
La funcin principal del cdigo fuente main debe tener uno de los siguientes prototipos:
int main()
int main(int argc, char** argv)
Aunque no es estndar algunas implementaciones permiten
int main(int argc, char** argv, char** env)
La primera es la forma por omisin de un programa que no recibe parmetros ni
argumentos. La segunda forma tiene dos parmetros: argc, un nmero que describe el
nmero 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 aade la posibilidad de poder acceder a las variables de entorno de ejecucin 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 funcin main , debe
incluirse el valor de retorno (por ejemplo, return 0;, aunque el estndar prev solamente
dos posibles valores de retorno: EXIT_SUCCESS y EXIT_FAILURE, definidas en el
archivo cstdlib), o salir por medio de la funcin exit. Alternativamente puede dejarse en
blanco, en cuyo caso el compilador es responsable de agregar la salida adecuada.