Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

1/20/2020 C++ - EcuRed

C++
C++ es un lenguaje imperativo orientado a objetos derivado del C.
En realidad un superconjunto de C, que nació para añadirle C++
cualidades y características de las que carecía. El resultado es que
Parte de la familia Derivados de C
como su ancestro, sigue muy ligado al hardware subyacente,
manteniendo una considerable potencia para programación a bajo
nivel, pero se la han añadido elementos que le permiten también un
estilo de programación con alto nivel de abstracción. Estrictamente
hablando, C no es un subconjunto de C++; de hecho es posible
escribir código C que es ilegal en C++. Pero a efectos prácticos,
dado el esfuerzo de compatibilidad desplegado en su diseño, puede
considerarse que C++ es una extensión del C clásico. La definición
"oficial" del lenguaje nos dice que C++ es un lenguaje de propósito
general basado en el C, al que se han añadido nuevos tipos de
datos, clases, plantillas, mecanismo de excepciones, sistema de
espacios de nombres, funciones inline, sobrecarga de operadores, Lenguaje de programación
referencias, operadores para manejo de memoria persistente, y
algunas utilidades adicionales de librería (en realidad la librería Creador Bjarne
Estándar C es un subconjunto de la librería C++) Stroustrup
Lanzamiento inicial 1983
Sistemas Operativos
Multiplataforma
compatibles

Sumario
1 Un Poco de historia
2 Conceptos generales de la programación orientada a
objetos
3 Acerca de la POO
4 Acerca de Intérprete y compiladores
5 Qué se puede hacer con C++
5.1 Un ejemplo de código
6 ¿Qué se ha hecho en C o en C++?
6.1 Sistemas Operativos y otros programas
7 Ver también
8 Fuentes

Un Poco de historia

https://www.ecured.cu/C%2B%2B 1/6
1/20/2020 C++ - EcuRed

El comité para el estándar ANSI C fue formado en 1983 con el objetivo de crear un lenguaje uniforme a partir del C original,
desarrollado por Kernighan y Ritchie en 1972, en la ATT. Hasta entonces el estándar lo marcaba el libro escrito en 1978 por
estos dos autores1. El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue Bjarne Stroustrup, también de la ATT. Al
comienzo era una extensión del lenguaje C que fue denominada C with classes. Este nuevo lenguaje comenzó a ser utilizado
fuera de la ATT en 1983. El nombre C++ es también de ese año, y hace referencia al carácter del operador incremento de C
(++). Ante la gran difusión y éxito que iba obteniendo en el mundo de los programadores, la ATT comenzó a estandarizarlo
internamente en 1987. En 1989 se formó un comité ANSI (seguido algún tiempo después por un comité ISO) para
estandarizarlo a nivel americano e internacional. En la actualidad, el C++ es un lenguaje versátil, potente y general. Su éxito
entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de
aplicaciones. El C++ mantiene las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y
eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original. La evolución de C++ ha continuado
con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar
aplicaciones en Internet. Hay que señalar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por
ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus
primeras versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron tomadas del C++. C++ es a la vez un
lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es
compatible con él, aunque ya se ha dicho que presenta ciertas ventajas. Como lenguaje orientado a objetos se basa en una
filosofía completamente diferente, que exige del programador un completo cambio de mentalidad. Las características propias
de la Programación Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí
que cambian radicalmente su naturaleza.

Conceptos generales de la programación orientada a objetos


Clase: Es una plantilla que define la estructura de un conjunto de objetos, que al ser creados se llamarán las instancias
de la clase. Esta estructura está compuesta por la definición de los atributos y la implementación de las operaciones (
métodos ).

Objeto: Es la implementación de una instancia de clase, es decir, una ocurrencia de esta, que tiene los atributos
definidos por la clase, y sobre la que se puede ejecutar las operaciones definidas en ella.

Identidad: Característica de cada objeto que lo diferencia de los demás, incluyendo de aquellos que pudieran
pertenecer a la misma clase y tener los mismos valores en sus atributos.

Herencia: Es la capacidad que tienen las clases para heredar propiedades y métodos de otras clases.

Acerca de la POO
La POO es una nueva filosofía de programación que se basa en la utilización de objetos. El objetivo de la POO no es sino la
meta de cualquier modelo de programación estructurada convencional: "imponer" una serie de normas de desarrollo que
aseguren y faciliten la mantenibilidad y reusabilidad del código. Los mecanismos básicos de la POO son: objetos, mensajes,
métodos y clases.

Objetos. Un objeto es una entidad que tiene unos atributos particulares (datos) y unas formas de operar sobre ellos (los
métodos o funciones miembro). Es decir, un objeto incluye, por una parte una serie de operaciones que definen su
comportamiento, y una serie de variables manipuladas por esas funciones que definen su estado. Por ejemplo, una
ventana Windows contendrá operaciones como "maximizar" y variables como "ancho" y "alto" de la ventana.
Mensajes. En C++, un mensaje se corresponde con el nombre de uno de los métodos de un objeto. Cuando se pasa
un mensaje a un objeto, este responde ejecutando el código de la función asociada.
Método. Un método (función miembro) se implementa dentro de un objeto y determina como tiene que actuar el objeto
cuando se produce el mensaje asociado. En C++ un método se corresponde con la definición de la función miembro

https://www.ecured.cu/C%2B%2B 2/6
1/20/2020 C++ - EcuRed

del objeto. La estructura más interna de un objeto está oculta, de tal manera que la única conexión con el exterior son
los mensajes
Clases. Una clase es la definición de un tipo de objetos. De esta manera, una clase "Empleado" representaría todos los
empleados de una empresa, mientras que un objeto de esa clase (también denominado instancia) representaría a uno de
esos empleados en particular.

Las principales características de la POO son: abstracción, encapsulamiento, herencia y polimorfismo:

Abstracción. Es el mecanismo de diseño en la POO. Nos permite extraer de un conjunto de entidades datos y
comportamientos comunes para almacenarlos en clases.
Encapsulamiento. Mediante esta técnica conseguiremos que cada clase sea una caja negra, de tal manera que los
objetos de esa clase se puedan manipular como unidades básicas. Los detalles de la implementación se encuentran
dentro de la clase, mientras que desde el exterior, un objeto será simplemente una entidad que responde a una serie de
mensajes públicos (también denominados interfaz de la clase).
Herencia. Es el mecanismo que nos permite crear clases derivadas (especialización) a partir de clases bases
(generalización). Es decir, podríamos tener la clase "Empleado" (clase base) y la clase "Vendedor" derivando de la
anterior. Una librería de clases (como la MFC) no es más que un conjunto de definiciones de clases interconectadas
por múltiples relaciones de herencia.
Polimorfismo. Esta característica nos permite disponer de múltiples implementaciones de un mismo método de clase,
dependiendo de la clase en la que se realice. Es decir, podemos acceder a una variedad de métodos distintos (con el
mismo nombre) mediante el mismo mecanismo de acceso. En C++ el polimorfismo se consigue mediante la definición
de clases derivadas, funciones virtuales y el uso de punteros a objetos.

Otros dos conceptos muy importantes en la POO son relativos a la creación y destrucción de objetos. En lenguajes
estructurados convencionales, cuando se define una variable se le reserva espacio en memoria y, si no se inicializa
expresamente, se hace por defecto (por ejemplo, en C una variable global siempre se inicializa a 0, pero una automática no,
por lo que si no se inicializa expresamente su contenido inicial será basura); por otra parte, cuando se destruye una variable
(por que se abandona el ámbito de su definición - scope -) se libera la memoria que estaba ocupando. Si ahora hacemos el
paralelismo obligado entre variables y objetos para los lenguajes POO nos daremos cuenta de que deben existir
procedimientos especiales de construcción y destrucción de objetos. En concreto, cada clase tiene dos funciones miembro
especiales denominadas constructor y destructor.

Constructor -> Función miembro que es automáticamente invocada cada vez que se define un objeto, su objetivo es la
inicialización del mismo. Toma el mismo nombre que la clase, puede recibir parámetros y podemos tener varios
constructores definidos.
Destructor -> Función miembro invocada automáticamente cada vez que se destruye un objeto. Su objetivo es realizar
operaciones como liberación de memoria, cerrar ficheros abiertos, etc. Toma el mismo nombre de la clase comenzado
primero por el carácter "~", no toma parámetros y no admite la sobrecarga (sólo puede existir uno en cada clase).

En muchos casos, para las clases mas sencillas, podemos encontrar clases que no tiene constructor o destructor, ó ninguno de
los dos. En C++, siempre existen constructores y destructores por defecto que realizan una inicialización/liberación estándar.

Acerca de Intérprete y compiladores


Antes, mencionar que tanto C como C++ son lenguajes compilados, y no interpretados. Esta diferencia es muy importante, ya
que afecta mucho a muchos aspectos relacionados con la ejecución del programa. En un lenguaje interpretado, el programa
está escrito en forma de texto, es el propio programa fuente. Este programa fuente es procesado por un programa externo, el
intérprete, que traduce el programa, instrucción a instrucción, al tiempo que lo ejecuta. En los lenguajes interpretados no
existen programas ejecutables directamente por el ordenador. El intérprete traduce, en tiempo real, cada línea del programa
fuente, cada vez que se quiere ejecutar el programa. El los lenguajes compilados el proceso de traducción sólo se hace una
vez. El programa compilador toma como entrada el código fuente del programa, y da como salida un fichero que puede ser

https://www.ecured.cu/C%2B%2B 3/6
1/20/2020 C++ - EcuRed

ejecutado por el ordenador directamente. Una vez compilado, el programa ejecutable es autónomo, y ya no es necesario
disponer del programa original ni del compilador para ejecutarlo. Cada opción tiene sus ventajas e inconvenientes, y algunas
características que son consideradas una ventaja, pueden ser un inconveniente en ciertas circunstancias, y viceversa.

Los lenguajes interpretados son fácilmente modificables, ya que necesitamos tener el el código fuente disponible en el
ordenador. En los compilados, estos ficheros no son necesarios, una vez compilados.
Los lenguajes interpretados necesitan un programa externo, llamado intérprete o a veces máquina virtual, o framework.
Este programa actua como intermediario entre el fuente y el sistema operativo. En los compilados ese papel lo
desempeña el compilador, pero al contrario que con el intérprete, una vez ha hecho su trabajo, no es necesario que esté
presente para ejecutar el programa.
Estas dos características, lógicamente, hacen que los programas compilados requieran menos espacio de memoria que
los interpretados (si contamos el espacio usado por el intérprete), y en general, los compilados son más rápidos, ya que
sólo se compilan una vez, y el tiempo dedicado a esa tarea no se suma al de ejecución.

Entre los lenguajes interpretados están: BASIC (Código de instrucciones de propósito general para principiantes), Java, PHP.
Muchos lenguajes de script, etc. Entre los lenguajes compilados están: C, C++, Pascal.

Qué se puede hacer con C++


¿Qué clase de programas y aplicaciones se pueden crear usando C y C++? La respuesta es muy sencilla: TODOS. Tanto C
como C++ son lenguajes de programación de propósito general. Todo puede programarse con ellos, desde sistemas
operativos y compiladores hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos, aplicaciones a
medida, etc.

Un ejemplo de código
Este es el clásico programa hola mundo, la idea está centrada en el nacimiento de un nuevo programa de manos de su
creador.

#include <iostream>

using namespace std;

int main()
{
cout << "Hola mundo" << endl;
return 0;
}

¿Qué se ha hecho en C o en C++?


Sistemas Operativos y otros programas
Así como Unix el antecesor de este sistema operativo, GNU/Linux -a menudo denominado tan sólo como Linux, que
es el nombre del núcleo del SO- hace uso de un buen número de lenguajes de programación en sus distintos
componentes. ¿Cuáles son esos lenguajes? Cada tipo de recurso parece tener ciertas preferencias, y es que hay
lenguajes más adecuados para unas cosas. Obviamente el lenguaje de programación C sigue siendo la base, pero hay
mucho más implicados.
Kernel y drivers de dispositivos: Tanto los drivers como el kernel funcionan en un nivel realmente bajo de operaciones
en el ordenador. Para escribir el kernel del sistema operativo y acceder a las propiedades del hardware tales como los
ciclos de la memoria, buses de entrada/salida, etc., se necesita un lenguaje que pueda comunicarse con el hardware con

https://www.ecured.cu/C%2B%2B 4/6
1/20/2020 C++ - EcuRed

potencia. El kernel Linux hace uso del lenguaje C (aunque en realidad no se trate de un lenguaje de bajo nivel) con una
pequeña parte en lenguaje ensamblador.

Librerías y utilidades: Las librerías y utilidades básicas del sistema tales como mkdir, chmod, chown, head, tail, chroot,
uptime, users también están escritas en lenguaje C.

Gestores de paquetes y programas de configuración: Los gestores de paquetes tales como yum, apt, dpkg, etcétera,
también están escritos en C, que como veis es la estrella absoluta de los componentes "base" de un sistema
GNU/Linux.

Entornos de Escritorio y gestores de ventanas: La mayoría de gente usa un entorno de escritorio, y es que a día de hoy
poco queda sólo en interfaz de línea de comandos. Los gestores de ventanas tales como metacity, kwin están
desarrollados en C y requieren gcc para ser compilados. El entorno de escritorio, iconos, ventanas, barras de
herramientas, etc, están basados en librerías específicas (Qt para KDE, GTK+ para GNOME) y hacen uso del
lenguaje mayoritario, C.

Aplicaciones gráficas de usuario: Este es el punto donde entran en juego una gran cantidad de lenguajes de
programación, dado que básicamente es la capa más alta. Tenemos una gran variedad: C, Python, Java, Perl y otros.
Hay librerías GTK+, Tcl/Tk, Qt que son un frontend gráfico a tareas que corren por detrás en línea de comando.

El Sistema operativo Windows está hecho básicamente en C, C tiene la ventaja de que puede escalarse con
ensamblador, lo cual es buena opción para optimizar ciertos módulos.

Las versiones anteriores de Windows estaban hechas en Basic (Basic NO visual Basic) que es un lenguaje de bajo nivel de
hace unos cuantos años ya. Es un lenguaje que se usa mucho en la electrónica aun.

Actualmente Windows 7 Mac os x Leopard y Linux usan mas de una Tecnología ya se empezó a usar c# c++ y hasta
java en el caso de linux se usa phytom c y tbn ensambladores y demás cosas, y Mac siempre basado en Unix con
compilación en C++ para los últimos Sistemas Operativos.

Ver también
Ciencia de la Información
Puntero (C++)
Librería Estándar C++
Facetas C++
Contenedores C++
Constructor (C++)
Ficheros en C++
Programación de Computadoras
Programación Orientada a Objetos
Programación C Sharp
Historia del Lenguaje C
Code_Blocks

Fuentes
Manual C++ (http://mat21.etsii.upm.es/ayudainf/aprendainf/Cpp/manualcpp.pdf)
Curso Visual (http://www.monografias.com/trabajos5/visualcurso/visualcurso.shtml)
C++ (http://www.zator.com/Cpp/E1_2.htm)

https://www.ecured.cu/C%2B%2B 5/6
1/20/2020 C++ - EcuRed

C++ en Wikipedia (http://es.wikipedia.org/wiki/C%2B%2B)


C++ en ProgramacionFacil.com (http://www.programacionfacil.com/cpp:informacion_y_conocimiento)
C++ en SomosLibres.org (http://www.somoslibres.org/modules.php?name=News&file=article&sid=2708)
El C++ y los Sistemas Operativos (http://www.psicofxp.com/forums/programacion.313/374200-c-y-sistemas-operativ
os.html)
Windows está escrito en C++ (http://es.kioskea.net/forum/affich-101630-lenguaje-en-que-fue-escrito-windows)

Obtenido de «https://www.ecured.cu/index.php?title=C%2B%2B&oldid=3417456»

https://www.ecured.cu/C%2B%2B 6/6

También podría gustarte