Sei sulla pagina 1di 7

C++

C++

Desarrollador(es)

Bjarne Stroustrup, Laboratorios Bell

Informacin general

Extensiones .h .hh .hpp .hxx .h++ .cc


comunes .cpp .cxx .c++

Paradigma Multiparadigma: orientado a


objetos, imperativo, programacin genrica

Apareci en 1983

Diseado por Bjarne Stroustrup

ltima versin ISO/IEC 14882:2014 (2014)


estable

ltima versin en C++14 (2014)


pruebas

Sistema de tipos Fuerte, esttico, nominativo

Implementaciones C++ Builder, clang, Comeau C/C++, GCC, Intel


C++ Compiler, Microsoft Visual C++, Sun
Studio, Code::Blocks, Zinjai
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

[editar datos en Wikidata]

Bjarne Stroustrup, creador del C++.

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++:

/* 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 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:

Caracteres: char (tambin es un entero), wchar_t


Enteros: short , int , long , long long
Nmeros en coma flotante: float , double , long double
Booleanos: bool
Vaco: void
El modificador unsigned se puede aplicar a enteros para obtener nmeros sin signo (por
omisin los enteros contienen signo), con lo que se consigue un rango mayor de nmeros
naturales.
Tamaos asociados[editar]
Segn la mquina y el compilador que se utilice los tipos primitivos pueden ocupar un
determinado tamao en memoria. La siguiente lista ilustra el nmero de bits que ocupan
los distintos tipos primitivos en la arquitectura x86.
Otras arquitecturas pueden requerir distintos tamaos de tipos de datos primitivos. C++ no
dice nada acerca de cul es el nmero de bits en un byte, ni del tamao de estos tipos;
ms bien, ofrece solamente las siguientes "garantas de tipos":
De acuerdo al estndar C99, un Tamaos de tipos primitivos bajo i386 (GCC)
tipo char debe ocupar exactamente
un byte compuesto de un mnimo de Tipo Nmero de bits
8 bits independientemente de la
arquitectura de la mquina.
char 8
El tamao reconocido de char es de 1.
Es decir, sizeof(char) siempre
short 16
devuelve 1.
Un tipo short tiene al menos el
int 32
mismo tamao que un tipo char .
Un tipo long tiene al menos el
float 32
doble tamao en bytes que un tipo short .
Un tipo int tiene un tamao entre el
double 64
de short y el de long , ambos inclusive,
preferentemente el tamao de un
apuntador de memoria de la mquina. Su
valor mximo es 2147488281, usando 32 bits.
Un tipo unsigned tiene el mismo tamao que su versin signed .
Wchar_t[editar]
Para la versin del estndar que se public en 1998, se decidi aadir el tipo de
dato wchar_t , que permite el uso de caracteres UNICODE, a diferencia del
tradicional char , que contempla simplemente al cdigo de caracteres ASCII extendido. A
su vez, se ha definido para la mayora de las funciones y clases, tanto de C como de C++,
una versin para trabajar con wchar_t , donde usualmente se prefija el carcter w al
nombre de la funcin (en ocasiones el carcter 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"[editar]
La palabra reservada void define en C++ el concepto de no existencia o no atribucin de
un tipo en una variable o declaracin. Es decir, una funcin declarada como void no
devolver ningn valor. Esta palabra reservada tambin puede usarse para indicar que
una funcin no recibe parmetros, como en la siguiente declaracin:

int funcion (void);

Aunque la tendencia actual es la de no colocar la palabra "void".


Adems se utiliza para determinar que una funcin no retorna un valor, como en:
void funcion (int parametro);

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 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 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:

void* puntero = NULL;


int entero = NULL;
bool boleana = NULL;
char caracter = NULL;

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.

Potrebbero piacerti anche