C++ [ b ] es un lenguaje de programación de alto nivel y propósito general creado por el científico informático danés Bjarne Stroustrup . Publicado por primera vez en 1985 como una extensión del lenguaje de programación C , añadiendo características de programación orientada a objetos (POO), desde entonces se ha expandido significativamente con el tiempo añadiendo más POO y otras características; a partir de 1997Con la estandarización de C++98, C++ ha añadido características funcionales , además de facilidades para la manipulación de memoria de bajo nivel para sistemas como microcomputadoras o para crear sistemas operativos como Linux o Windows , e incluso más tarde llegaron características como la programación genérica (mediante el uso de plantillas ). C++ se implementa generalmente como un lenguaje compilado , y muchos proveedores ofrecen compiladores de C++ , incluyendo la Free Software Foundation , LLVM , Microsoft , Intel , Embarcadero , Oracle e IBM . [ 16 ]
C++ fue diseñado pensando en la programación de sistemas y el software embebido , con recursos limitados y sistemas grandes, con el rendimiento , la eficiencia y la flexibilidad de uso como características principales de su diseño. [ 17 ] C++ también ha demostrado ser útil en muchos otros contextos, destacando su utilidad en infraestructura de software y aplicaciones con recursos limitados, [ 17 ] incluyendo aplicaciones de escritorio , videojuegos , servidores (por ejemplo, comercio electrónico , búsqueda web o bases de datos ) y aplicaciones críticas para el rendimiento (por ejemplo, conmutadores telefónicos o sondas espaciales ). [ 18 ]
C++ está estandarizado por la Organización Internacional de Normalización (ISO), con la última versión estándar ratificada y publicada por ISO en octubre de 2024 como ISO/IEC 14882:2024 (conocido informalmente como C++23 ). [ 19 ] El lenguaje de programación C++ se estandarizó inicialmente en 1998 como ISO/IEC 14882:1998 , que luego fue enmendado por los estándares C++03 , C++11 , C++14 , C++17 y C++20 . El siguiente estándar C++23 reemplazó a estos con nuevas características y una biblioteca estándar ampliada . Antes de la estandarización inicial en 1998, C++ fue desarrollado por Stroustrup en Bell Labs desde 1979 como una extensión del lenguaje C; él quería un lenguaje eficiente y flexible similar a C que también proporcionara características de alto nivel para la organización del programa. [ 20 ] Desde 2012, C++ ha tenido un calendario de lanzamiento de tres años [ 21 ] siendo C++29 el próximo estándar previsto. [ 22 ]
Historia

En 1979, Bjarne Stroustrup , un científico informático danés , comenzó a trabajar en "C con clases , el predecesor de C++. [ 23 ] La motivación para crear un nuevo lenguaje se originó a partir de la experiencia de Stroustrup en programación para su tesis doctoral. Stroustrup descubrió que Simula tenía características muy útiles para el desarrollo de software a gran escala, pero el lenguaje era demasiado lento para su uso práctico, mientras que BCPL era rápido pero de un nivel demasiado bajo para ser adecuado para el desarrollo de software a gran escala. Cuando Stroustrup comenzó a trabajar en AT&T Bell Labs , tuvo el problema de analizar el núcleo UNIX con respecto a la computación distribuida . Recordando su experiencia doctoral, Stroustrup se propuso mejorar el lenguaje C con características similares a las de Simula. [ 24 ] Se eligió C porque era de propósito general, rápido, portátil y de uso generalizado. Además de las influencias de C y Simula, otros lenguajes influyeron en este nuevo lenguaje, incluidos ALGOL 68 , Ada , CLU y ML . [ 25 ]
Inicialmente, el "C con clases" de Stroustrup añadió características al compilador de C, Cpre, incluyendo clases , clases derivadas , tipado fuerte , inserción en línea y argumentos predeterminados . [ 26 ]

En 1982, Stroustrup comenzó a diseñar un sucesor de C con clases, más limpio y extendido, utilizando tecnología de compilación tradicional. [ 27 ] El lenguaje se llamó brevemente C84 antes de que se adoptara el nombre C++; el nombre fue sugerido por Rick Mascitti y hace referencia al ++operador de incremento de C. [ 27 ] [ 28 ] El lenguaje resultante incluía funciones virtuales , sobrecarga de funciones y operadores , referencias , comprobación de tiposconst mejorada , asignación de memoria libre controlada por el usuario ( / ) y comentarios de una sola línea al estilo BCPL . [ 27 ] Stroustrup también diseñó e implementó Cfront , el front-end del compilador de C++ , entre la primavera de 1982 y el verano de 1983. [ 27 ]newdelete//
En 1984, Stroustrup implementó la primera biblioteca de entrada/salida de flujo. La idea de proporcionar un operador de salida en lugar de una función de salida con nombre fue sugerida por Doug McIlroy [ 4 ] (quien previamente había sugerido las tuberías de Unix ).
En 1985 se publicó la primera edición de The C++ Programming Language , que se convirtió en la referencia definitiva del lenguaje, ya que aún no existía un estándar oficial. [ 29 ] La primera implementación comercial de C++ se publicó en octubre del mismo año. [ 23 ]
En 1989, se lanzó C++ 2.0, seguido de la segunda edición actualizada de The C++ Programming Language en 1991. [ 30 ] Las nuevas características de 2.0 incluyeron herencia múltiple, clases abstractas, funciones miembro estáticas, funciones miembro const y miembros protegidos. En 1990, se publicó The Annotated C++ Reference Manual . Este trabajo se convirtió en la base del futuro estándar. Las adiciones de características posteriores incluyeron plantillas , excepciones , espacios de nombres , nuevas conversiones y un tipo booleano .
En 1998 se lanzó C++98, que estandarizó el lenguaje, y en 2003 se lanzó una actualización menor ( C++03 ).
Después de C++98, C++ evolucionó relativamente lento hasta que, en 2011, se publicó el estándar C++11 , que añadió numerosas características nuevas, amplió aún más la biblioteca estándar y proporcionó más facilidades a los programadores de C++. Después de una actualización menor de C++14 publicada en diciembre de 2014, se introdujeron varias adiciones nuevas en C++17 . [ 31 ] Después de ser finalizado en febrero de 2020, [ 32 ] un borrador del estándar C++20 fue aprobado el 4 de septiembre de 2020 y publicado oficialmente el 15 de diciembre de 2020. [ 33 ] [ 34 ]
El 3 de enero de 2018, Stroustrup fue anunciado como el ganador del Premio Charles Stark Draper de Ingeniería de 2018, "por conceptualizar y desarrollar el lenguaje de programación C++". [ 35 ]
En diciembre de 2022, C++ ocupó el tercer lugar en el índice TIOBE , superando a Java por primera vez en la historia del índice. A partir de noviembre de 2024 , el lenguaje ocupa el segundo lugar después de Python , con Java en tercer lugar. [ 36 ]
En marzo de 2025, Stroustrup hizo un llamamiento a la comunidad de lenguajes para que lo defendiera. Dado que el lenguaje permite la gestión manual de la memoria, pueden introducirse errores que representan riesgos de seguridad, como el desbordamiento de búfer, en los programas cuando el programador lo utiliza de forma inadvertida. [ 37 ]
Etimología
Según Stroustrup, "el nombre significa la naturaleza evolutiva de los cambios con respecto a C". [ 38 ] Este nombre se le atribuye a Rick Mascitti (mediados de 1983) [ 26 ] y se usó por primera vez en diciembre de 1983. Cuando se le preguntó informalmente a Mascitti en 1992 sobre el nombre, indicó que se le dio en tono de broma . El nombre proviene del ++operador de C (que incrementa el valor de una variable ) y de una convención común de nomenclatura que utiliza "+" para indicar un programa informático mejorado.
Durante el período de desarrollo de C++, el lenguaje había sido denominado "nuevo C" y "C con clases" [ 26 ] [ 39 ] antes de adquirir su nombre final.
Filosofía
A lo largo de la vida de C++, su desarrollo y evolución se han guiado por un conjunto de principios: [ 24 ]
- Debe estar impulsado por problemas reales y sus características deben ser de utilidad inmediata en programas del mundo real.
- Cada característica debe ser implementable (con una forma razonablemente obvia de hacerlo).
- Los programadores deberían tener la libertad de elegir su propio estilo de programación, y ese estilo debería ser totalmente compatible con C++.
- Permitir una funcionalidad útil es más importante que prevenir cualquier posible mal uso de C++.
- Debe ofrecer facilidades para organizar los programas en partes separadas y bien definidas, así como facilidades para combinar partes desarrolladas por separado.
- No se permiten violaciones implícitas del sistema de tipos (pero sí violaciones explícitas; es decir, aquellas solicitadas explícitamente por el programador).
- Los tipos creados por el usuario deben tener el mismo soporte y rendimiento que los tipos integrados.
- Las funciones no utilizadas no deberían afectar negativamente a los archivos ejecutables creados (por ejemplo, reduciendo su rendimiento).
- No debería haber ningún lenguaje por debajo de C++ (excepto el lenguaje ensamblador ).
- C++ debería funcionar junto con otros lenguajes de programación existentes , en lugar de fomentar su propio entorno de programación separado e incompatible .
- Si se desconoce la intención del programador, permítale especificarla proporcionándole control manual.
Normalización
C++ está estandarizado por un grupo de trabajo de la ISO conocido como JTC1/SC22/WG21 . El grupo de trabajo celebra tres reuniones de una semana de duración cada año. [ 46 ] Hasta ahora, ha publicado siete revisiones del estándar C++ y actualmente está trabajando en la próxima revisión, C++26 .

En 1998, el grupo de trabajo de la ISO estandarizó C++ por primera vez como ISO/IEC 14882:1998 , conocida informalmente como C++98 . En 2003, publicó una nueva versión del estándar C++ llamada ISO/IEC 14882:2003 , que solucionó problemas detectados en C++98.
La siguiente revisión importante del estándar se denominó informalmente "C++0x", pero no se publicó hasta 2011. [ 47 ] C++11 (14882:2011) incluyó muchas adiciones tanto al lenguaje central como a la biblioteca estándar. [ 42 ]
En 2014, se publicó C++14 (también conocido como C++1y) como una pequeña extensión de C++11, que incluía principalmente correcciones de errores y pequeñas mejoras. [ 48 ] Los procedimientos de votación del borrador de la norma internacional concluyeron a mediados de agosto de 2014. [ 49 ]
Después de C++14, el comité ISO C++ completó una revisión importante, C++17 , conocida informalmente como C++1z, a mediados de julio de 2017, la cual fue aprobada y publicada en diciembre de 2017. [ 50 ]
Como parte del proceso de estandarización, la ISO también publica informes y especificaciones técnicas :
- ISO/IEC TR 18015:2006 [ 51 ] sobre el uso de C++ en sistemas embebidos y sobre las implicaciones de rendimiento de las características del lenguaje y la biblioteca C++,
- ISO/IEC TR 19768:2007 [ 52 ] (también conocido como el Informe Técnico de C++ 1 ) sobre extensiones de biblioteca integradas principalmente en C++11 ,
- ISO/IEC TR 29124:2010 [ 53 ] sobre funciones matemáticas especiales, integradas en C++17 ,
- ISO/IEC TR 24733:2011 [ 54 ] sobre aritmética de punto flotante decimal ,
- ISO/IEC TS 18822:2015 [ 55 ] sobre la biblioteca estándar del sistema de archivos, integrada en C++17 ,
- ISO/IEC TS 19570:2015 [ 56 ] sobre versiones paralelas de los algoritmos de la biblioteca estándar, integrados en C++17 ,
- ISO/IEC TS 19841:2015 [ 57 ] sobre memoria transaccional de software ,
- ISO/IEC TS 19568:2015 [ 58 ] sobre un nuevo conjunto de extensiones de biblioteca, algunas de las cuales ya están integradas en C++17 ,
- ISO/IEC TS 19217:2015 [ 59 ] sobre los conceptos de C++ , integrados en C++20 ,
- ISO/IEC TS 19571:2016 [ 60 ] sobre las extensiones de biblioteca para concurrencia, algunas de las cuales ya están integradas en C++20 ,
- ISO/IEC TS 19568:2017 [ 61 ] sobre un nuevo conjunto de extensiones de biblioteca de propósito general,
- ISO/IEC TS 21425:2017 [ 62 ] sobre las extensiones de biblioteca para rangos, integradas en C++20 ,
- ISO/IEC TS 22277:2017 [ 63 ] sobre corrutinas, integradas en C++20 ,
- ISO/IEC TS 19216:2018 [ 64 ] sobre la biblioteca de redes,
- ISO/IEC TS 21544:2018 [ 65 ] sobre módulos , integrados en C++20 ,
- ISO/IEC TS 19570:2018 [ 66 ] sobre un nuevo conjunto de extensiones de biblioteca para paralelismo
- ISO/IEC TS 23619:2021 [ 67 ] sobre nuevas extensiones para la programación reflexiva (reflexión),
- ISO/IEC TS 9922:2024 [ 68 ] sobre un nuevo conjunto de extensiones de concurrencia y
- ISO/IEC TS 19568:2024 [ 69 ] sobre otro nuevo conjunto de extensiones de biblioteca.
Se están elaborando especificaciones técnicas adicionales que están pendientes de aprobación.
Idioma
El lenguaje C++ tiene dos componentes principales: una asignación directa de características de hardware proporcionada principalmente por el subconjunto C, y abstracciones sin sobrecarga basadas en esas asignaciones. Stroustrup describe C++ como "un lenguaje de programación de abstracción ligero [diseñado] para construir y usar abstracciones eficientes y elegantes"; [ 17 ] y "ofrecer tanto acceso al hardware como abstracción es la base de C++. Hacerlo de manera eficiente es lo que lo distingue de otros lenguajes". [ 70 ]
C++ hereda la mayor parte de la sintaxis de C. Un programa "hola mundo" que cumple con el estándar C también es un programa "hola mundo" válido en C++. Lo siguiente está adaptado de la versión de Bjarne Stroustrup del programa "hola mundo" que utiliza la función de flujo de la biblioteca estándar de C++ para escribir un mensaje en la salida estándar : [ 71 ] [ 72 ] [ c ]
#include <iostream>int main () {std :: cout << "¡Hola, mundo! \n " ;}Desde C++23 , con la introducción de las funciones std::print y el módulo std , esto se puede expresar de forma menos verbosa como:
importar std ;int main () {std :: println ( "¡Hola, mundo!" );}Biblioteca estándar

El estándar C++ especifica tanto el lenguaje principal como la biblioteca estándar . Las cláusulas de la biblioteca describen el contenido de la misma, cómo la utiliza un programa C++ bien formado y los requisitos impuestos a las implementaciones conformes. [ 73 ]
La biblioteca estándar está organizada en áreas como soporte de lenguaje, diagnóstico, gestión de memoria , metaprogramación , utilidades generales, contenedores , iteradores , rangos , algoritmos , cadenas , procesamiento de texto , números , tiempo, entrada/salida y soporte de concurrencia . [ 73 ] También proporciona las funcionalidades de la biblioteca estándar de C a través de encabezados de C++ como <cstdio>y <cstdlib>; excepto para los nombres definidos como macros en C, estas declaraciones se colocan en el espacio de nombresstd . [ 74 ]
Las funcionalidades de la biblioteca se ponen a disposición tradicionalmente mediante la inclusión de encabezados estándar, por ejemplo . Desde C++20, los encabezados de la biblioteca estándar importables también pueden importarse como unidades de encabezado. C++23 añadió los módulos de la biblioteca estándar con nombre y : exporta declaraciones en el espacio de nombres , mientras que también exporta las declaraciones de espacio de nombres global correspondientes para las funcionalidades de la biblioteca C. [ 75 ]#include<vector>stdstd.compatstdstdstd.compat
Una influencia importante en la biblioteca estándar fue la Biblioteca de Plantillas Estándar (STL), una biblioteca de programación genérica propuesta al comité de estándares de C++ por Alexander Stepanov y Meng Lee en 1994. Su modelo de contenedores, iteradores y algoritmos genéricos pasó a formar parte de la Biblioteca Estándar de C++, aunque esta también incluye muchas otras funcionalidades, como entrada/salida, localización, diagnóstico y el subconjunto de la biblioteca C. [ 76 ] [ 77 ]
Directrices básicas de C++
Las Directrices básicas de C++ [ 78 ] son una iniciativa liderada por Stroustrup y Herb Sutter, coordinador y presidente del Grupo de Trabajo ISO de C++, para ayudar a los programadores a escribir "C++ moderno" utilizando las mejores prácticas para los estándares del lenguaje C++11 y posteriores, y para ayudar a los desarrolladores de compiladores y herramientas de verificación estática a crear reglas para detectar malas prácticas de programación. El objetivo principal es escribir C++ seguro en cuanto a tipos y recursos de manera eficiente y consistente. A pesar de esto, las directrices no cuentan con el respaldo del comité de estándares ISO C++ y no representan el consenso del comité. [ 79 ]
Las Directrices básicas se anunciaron [ 80 ] en el discurso de apertura de CPPCon 2015.
Las Directrices se acompañan de la Biblioteca de Soporte de Directrices (GSL), una biblioteca de solo encabezados de tipos y funciones para implementar las Directrices Principales y herramientas de verificación estática para hacer cumplir las reglas de las Directrices. [ 81 ] Una de las implementaciones más grandes de esto es la implementación de Microsoft. [ 82 ] Muchas de las características existentes en la GSL se han integrado posteriormente en el lenguaje, como std::bytelos punteros inteligentes y std::span. [ 82 ]
Compatibilidad
Para dar mayor libertad a los proveedores de compiladores, el comité de estándares de C++ decidió no imponer la implementación de la modificación de nombres , el manejo de excepciones y otras características específicas de la implementación. La desventaja de esta decisión es que se espera que el código objeto producido por diferentes compiladores sea incompatible. Sin embargo, existen intentos de estandarizar los compiladores para máquinas o sistemas operativos específicos . Por ejemplo, la ABI de Itanium C++ es independiente del procesador (a pesar de su nombre) y está implementada por GCC y Clang. [ 83 ]
Con C
A menudo se considera que C++ es un superconjunto de C , pero esto no es del todo cierto. [ 84 ] La mayoría del código C se puede compilar fácilmente de forma correcta en C++, pero existen algunas diferencias que hacen que cierto código C válido sea inválido o se comporte de manera diferente en C++. Por ejemplo, C permite la conversión implícita de a otros tipos de puntero, pero C++ no (por razones de seguridad de tipos). Además, C++ define muchas palabras clave nuevas, como y , que pueden usarse como identificadores (por ejemplo, nombres de variables) en un programa C.void*newclass
Algunas incompatibilidades se eliminaron con la revisión de 1999 del estándar C ( C99 ), que ahora admite características de C++ como comentarios de línea ( //) y declaraciones mezcladas con código. Por otro lado, C99 introdujo una serie de características nuevas que C++ no admitía y que eran incompatibles o redundantes en C++, como arreglos de longitud variable , tipos de números complejos nativos (sin embargo, la clase en la biblioteca estándar de C++ proporciona una funcionalidad similar, aunque no es compatible con el código), inicializadores designados, literales compuestos y la palabra clave. [ 85 ] Algunas de las características introducidas por C99 se incluyeron en la versión posterior del estándar C++, C++11 (de entre las que no eran redundantes). [ 86 ] [ 87 ] [ 88 ] Sin embargo, el estándar C++11 introduce nuevas incompatibilidades, como no permitir la asignación de un literal de cadena a un puntero de carácter, que sigue siendo válido en C.std::complexrestrict
Para combinar código C y C++, cualquier declaración o definición de función que se vaya a llamar o usar tanto en C como en C++ debe declararse con enlace C, colocándola dentro de un bloque. Dicha función no puede depender de características que se basen en la modificación de nombres (es decir, la sobrecarga de funciones).extern"C"{/*...*/}
Ensamblaje en línea
Los programas desarrollados en C o C++ suelen utilizar el ensamblador en línea para aprovechar sus funcionalidades de bajo nivel, mayor velocidad y control mejorado en comparación con los lenguajes de programación de alto nivel [ 89 ] [ 90 ] cuando la optimización del rendimiento es esencial. C++ ofrece soporte para la incrustación de lenguaje ensamblador mediante declaraciones asm [ 91 ] , pero la compatibilidad del ensamblador en línea varía significativamente entre compiladores y arquitecturas. A diferencia de las características de los lenguajes de alto nivel como Python o Java , el código ensamblador depende en gran medida del procesador subyacente y de la implementación del compilador.
Variaciones entre compiladores
Los distintos compiladores de C++ implementan el ensamblador en línea de maneras diferentes.
- GCC ( GNU Compiler Collection ) y Clang : [ 92 ] Ambos compiladores utilizan la sintaxis de ensamblador en línea extendida de GCC, usando la
__asm__palabra clave en lugar deasmcuando escriben código que puede compilarse con opciones y , lo que permite especificar operandos de entrada/salida y registros modificados. Este enfoque también se adopta en otros lugares, incluidos los compiladores de Intel [ 93 ] e IBM [ 94 ] .-ansi-std - MSVC ( Microsoft Visual C++ ): El ensamblador en línea está integrado en el compilador. Anteriormente, se admitía el ensamblador en línea mediante la
__asmpalabra clave, pero esta compatibilidad se eliminó en el modo de 64 bits, requiriendo en su lugar módulos .asm separados. [ 95 ] - TI ARM Clang y compiladores embebidos: [ 96 ] Algunos compiladores de sistemas embebidos, como TI Arm Clang de Texas Instruments, permiten el ensamblaje en línea, pero imponen reglas más estrictas para evitar conflictos con las convenciones de registro y las convenciones de llamada.
Interoperabilidad entre C++ y Assembly
C++ proporciona dos métodos principales para integrar código ASM: archivos de ensamblaje independientes, donde el código ensamblador se escribe por separado y se enlaza con el código C++. [ 97 ] Y ensamblaje en línea , donde el código ensamblador se incrusta dentro del código C++ utilizando extensiones específicas del compilador.
Véase también
- Carbon (lenguaje de programación) : desarrollo en Google para ser potencialmente el sucesor de C++.
- Comparación de lenguajes de programación
- Lista de compiladores de C++
- Lista de software y herramientas de C++
- Lista de libros de programación en C++
- Esquema de C++
- Categoría: Bibliotecas de C++
Notas
- ↑ Por la idea de las corrutinas sin pila de C++20.
- ↑ Se pronuncia / ˈ s iː p l ʌ s p l ʌ s / VER PLUSS PLUSS y a veces se abrevia como CPP o CXX .
- ↑ Este código está adaptado de la página de erratas de Bjarne Stroustrup (pág. 633). Aborda el uso de
'\n'en lugar destd::endl. Véase también ¿ Puedo escribir "void main()"? Archivado el 2 de julio de 2020 en Wayback Machine para una explicación del implícitoreturn 0;en lamainfunción. Este retorno implícito no está disponible en otras funciones.
Referencias
- ↑ Wyatt Childers; et al. (26 de junio de 2024). "P2996R4 - Reflexión para C++26" . isocpp.org . WG21.
- ↑ "N5032: Borrador de trabajo, Lenguajes de programación — C++" (PDF) . ISO/IEC JTC 1/SC 22. 15 de diciembre de 2025. Consultado el 29 de abril de 2026 .
- ↑ "Descripción general de los módulos en C++" . Microsoft. 24 de abril de 2023.
- 1 2 3 4 5 6 Stroustrup, Bjarne (1996). "Una historia de C++: 1979-1991". Historia de los lenguajes de programación---II . ACM . pp. 699– 769. doi : 10.1145/234286.1057836 .
- ↑ Stroustrup, Bjarne (16 de diciembre de 2021). "C++20: Alcanzando los objetivos de C++ - Bjarne Stroustrup - CppCon 2021" . CppCon. Archivado del original el 30 de diciembre de 2021. Recuperado el 30 de diciembre de 2021 .
- ↑ Stroustrup, Bjarne (12 de junio de 2020). "Prosperar en un mundo saturado y cambiante: C++ 2006–2020" . Actas de la ACM sobre lenguajes de programación . 4 (HOPL). Association for Computing Machinery (ACM): 1–168 . doi : 10.1145/3386320 . ISSN 2475-1421 . S2CID 219603741 .
- ↑ Naugler, David (mayo de 2007). "C# 2.0 para programadores de C++ y Java: taller de conferencia". Journal of Computing Sciences in Colleges . 22 (5).
Si bien C# ha sido fuertemente influenciado por Java, también lo ha sido por C++ y se considera mejor como descendiente de ambos.
- ↑ "Especificaciones de la capilla (Agradecimientos)" (PDF) . Cray Inc. 1 de octubre de 2015. Archivado (PDF) del original el 24 de junio de 2018. Recuperado el 14 de enero de 2016 .
- ↑ Fogus, Michael. "Preguntas y respuestas con Rich Hickey" . Code Quarterly . Archivado del original el 11 de enero de 2017. Recuperado el 11 de enero de 2017 .
- ↑ Harry H. Chaudhary (28 de julio de 2014). "Cómo superar la entrevista de programación Java : más de 2000 preguntas y respuestas para entrevistas de Java" . Archivado del original el 27 de mayo de 2021. Consultado el 29 de mayo de 2016 .
- ↑ Roger Poon (1 de mayo de 2017). "Escalando JS++: Abstracción, rendimiento y legibilidad" . Archivado del original el 11 de mayo de 2020. Consultado el 21 de abril de 2020 .
- ↑ "La evolución de un lenguaje de extensión: una historia de Lua" . www.lua.org . Consultado el 4 de enero de 2023 .
- ↑ "Preguntas frecuentes sobre el lenguaje de programación Nim" . Archivado del original el 11 de julio de 2017. Consultado el 21 de abril de 2020 .
- ↑ "9. Clases — Documentación de Python 3.6.4" . docs.python.org . Archivado del original el 23 de octubre de 2012. Consultado el 9 de enero de 2018 .
- ↑ "Influencias - The Rust Reference" . doc.rust-lang.org . Consultado el 4 de enero de 2023 .
- ↑ Stroustrup, Bjarne (1997). "1". El lenguaje de programación C++ (Tercera ed.). Addison-Wesley. ISBN 0-201-88954-4OCLC 59193992
- 1 2 3 Stroustrup, B. (6 de mayo de 2014). "Conferencia: La esencia de C++. Universidad de Edimburgo" . YouTube . Archivado del original el 28 de abril de 2015. Recuperado el 12 de junio de 2015 .
- ↑ Stroustrup, Bjarne (17 de febrero de 2014). "Aplicaciones de C++" . stroustrup.com . Archivado del original el 4 de abril de 2021. Recuperado el 5 de mayo de 2014 .
- 1 2 "ISO/IEC 14882:2024" . Organización Internacional de Normalización . Consultado el 21 de octubre de 2020 .
- ↑ "Página web de Bjarne Stroustrup" . www.stroustrup.com . Archivado del original el 14 de mayo de 2019. Consultado el 15 de mayo de 2013 .
- ↑ "C++ IS schedule" (PDF) . Archivado (PDF) del original el 10 de agosto de 2020. Recuperado el 9 de agosto de 2020 .
- ↑ "C++29 - cppreference.com" . cppreference.com . Consultado el 10 de julio de 2026 .
- 1 2 Stroustrup, Bjarne (7 de marzo de 2010). "Preguntas frecuentes de Bjarne Stroustrup: ¿Cuándo se inventó C++?" . stroustrup.com . Archivado del original el 6 de febrero de 2016 . Recuperado el 16 de septiembre de 2010 .
- 1 2 Stroustrup, Bjarne. "Evolucionando un lenguaje en y para el mundo real: C++ 1991-2006" (PDF) . Archivado (PDF) del original el 20 de noviembre de 2007. Recuperado el 14 de agosto de 2013 .
- ↑ La familia de lenguajes C: Entrevista con Dennis Ritchie, Bjarne Stroustrup y James Gosling, C++ Report , 12(7), julio/agosto de 2000, citado en "La familia de lenguajes C: Entrevista con Dennis Ritchie, Bjarne Stroustrup y James Gosling" . Recuperado el 26 de diciembre de 2025 .
- 1 2 3 Stroustrup, Bjarne. "Una historia de C++ : 1979-1991" (PDF) . Archivado (PDF) del original el 2 de febrero de 2019. Recuperado el 18 de julio de 2013 .
- 1 2 3 4 Stroustrup, Bjarne (marzo de 1993). Una historia de C++: 1979–1991 (PDF) . Segunda Conferencia ACM SIGPLAN sobre la historia de los lenguajes de programación. Association for Computing Machinery. págs. 271–297 . doi : 10.1145/154766.155375 . Recuperado el 9 de junio de 2026 .
- ↑ Malloy, Rich (agosto de 1988). "El origen de C++" (PDF) . BYTE . pág. 216. Consultado el 9 de junio de 2026 .
- ↑ Stroustrup, Bjarne. "El lenguaje de programación C++" (Primera edición). Archivado del original el 9 de agosto de 2012. Consultado el 16 de septiembre de 2010 .
- ↑ Stroustrup, Bjarne. "El lenguaje de programación C++" (Segunda edición). Archivado del original el 9 de agosto de 2012. Recuperado el 16 de septiembre de 2010 .
- ↑ Sutter, Herb (30 de junio de 2016). "Informe de viaje: Reunión de estándares ISO C++ de verano (Oulu)" . herbsutter.com . Archivado del original el 8 de octubre de 2016.
El siguiente estándar después de C++17 será C++20.
- ↑ Dusíková, Hana (6 de noviembre de 2019). "N4817: Invitación e información para la reunión de Praga de 2020" (PDF) . Archivado (PDF) del original el 29 de diciembre de 2019. Recuperado el 13 de febrero de 2020 .
- ↑ "Estado actual" . isocpp.org . Archivado del original el 8 de septiembre de 2020. Consultado el 7 de septiembre de 2020 .
- ↑ "Aprobado para C++20 -- Herb Sutter" . isocpp.org . Archivado del original el 11 de septiembre de 2020. Consultado el 8 de septiembre de 2020 .
- ↑ «El pionero de la informática Bjarne Stroustrup recibirá el Premio Charles Stark Draper de Ingeniería 2018» (Comunicado de prensa). Academia Nacional de Ingeniería. 3 de enero de 2018. Archivado del original el 3 de enero de 2018. Consultado el 14 de diciembre de 2021 .
- ↑ TIOBE (noviembre de 2024). "Índice TIOBE de noviembre de 2024" . TIOBE.com . Empresa TIOBE. Archivado del original el 18 de noviembre de 2024. Consultado el 18 de noviembre de 2024 .
- ↑ Claburn, Thomas (2 de marzo de 2025). "El creador de C++ pide ayuda para defender el lenguaje de programación de 'ataques graves'"." . The Register . Consultado el 5 de marzo de 2025 .
- ↑ "Preguntas frecuentes de Bjarne Stroustrup : ¿De dónde viene el nombre "C++"?" . Archivado del original el 6 de febrero de 2016. Consultado el 16 de enero de 2008 .
- ↑ "C para programadores de C++" . Northeastern University . Archivado del original el 17 de noviembre de 2010. Consultado el 7 de septiembre de 2015 .
- ↑ "ISO/IEC 14882:1998" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2017. Consultado el 23 de noviembre de 2018 .
- ↑ "ISO/IEC 14882:2003" . Organización Internacional de Normalización. Archivado del original el 13 de agosto de 2021. Consultado el 23 de noviembre de 2018 .
- 1 2 "ISO/IEC 14882:2011" . Organización Internacional de Normalización. Archivado del original el 27 de mayo de 2016. Recuperado el 23 de noviembre de 2018 .
- ↑ "ISO/IEC 14882:2014" . Organización Internacional de Normalización. Archivado del original el 29 de abril de 2016. Consultado el 23 de noviembre de 2018 .
- ↑ "ISO/IEC 14882:2017" . Organización Internacional de Normalización. Archivado del original el 29 de enero de 2013. Consultado el 2 de diciembre de 2017 .
- ↑ "ISO/IEC 14882:2020" . Organización Internacional de Normalización. Archivado del original el 16 de diciembre de 2020. Consultado el 16 de diciembre de 2020 .
- ↑ "Reuniones y participación" . Noticias, estado y debate sobre el estándar C++ . La Fundación del Estándar C++ . Consultado el 6 de septiembre de 2025 .
- ↑ "Tenemos un estándar internacional: C++0x está aprobado por unanimidad" . Sutter's Mill . 12 de agosto de 2011. Archivado del original el 28 de junio de 2018. Consultado el 23 de noviembre de 2018 .
- ↑ "El futuro de C++" . Archivado del original el 23 de octubre de 2018. Consultado el 23 de noviembre de 2018 a través de channel9.msdn.com.
- ↑ "¡Tenemos C++14! : Estándar C++" . isocpp.org . Archivado del original el 19 de agosto de 2014. Consultado el 19 de agosto de 2014 .
- ↑ Sutter, Herb (15 de julio de 2017). "Informe de viaje: Reunión de estándares ISO C++ de verano (Toronto)" . Archivado del original el 6 de agosto de 2017. Recuperado el 4 de agosto de 2017 .
- ↑ "ISO/IEC TR 18015:2006" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TR 19768:2007" . Organización Internacional de Normalización. Archivado del original el 4 de marzo de 2016. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TR 29124:2010" . Organización Internacional de Normalización. Archivado del original el 12 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TR 24733:2011" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 18822:2015" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19570:2015" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19841:2015" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19568:2015" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19217:2015" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19571:2016" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19568:2017" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 21425:2017" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 22277:2017" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19216:2018" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 21544:2018" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 19570:2018" . Organización Internacional de Normalización. Archivado del original el 15 de enero de 2019. Consultado el 15 de febrero de 2019 .
- ↑ "ISO/IEC TS 23619:2021" . Organización Internacional de Normalización. Archivado del original el 15 de diciembre de 2018. Consultado el 11 de octubre de 2021 .
- ↑ "ISO/IEC TS 9922:2024" . Organización Internacional de Normalización. Archivado del original el 1 de abril de 2025. Consultado el 1 de abril de 2025 .
- ↑ "ISO/IEC TS 19568:2024" . Organización Internacional de Normalización. Archivado del original el 25 de febrero de 2025. Consultado el 1 de abril de 2025 .
- ↑ B. Stroustrup (entrevistado por Sergio De Simone) (30 de abril de 2015). "Stroustrup: Reflexiones sobre C++17 - Una entrevista" . Archivado del original el 8 de julio de 2015. Recuperado el 8 de julio de 2015 .
- ↑ Stroustrup, Bjarne (2000). El lenguaje de programación C++ ( Edición especial). Addison-Wesley. pág. 46. ISBN 0-201-70073-5.
- ↑ Stroustrup, Bjarne. "Problemas abiertos para el lenguaje de programación C++ (3.ª edición)" . Archivado del original el 5 de mayo de 2014. Recuperado el 5 de mayo de 2014 .
- 1 2 "Borrador de trabajo, Lenguajes de programación — C++: Introducción a la biblioteca" . eel.is. §16.1 [library.general] . Consultado el 9 de junio de 2026 .
- ↑ "Borrador de trabajo, Lenguajes de programación — C++: Cabeceras" . eel.is. §16.4.2.3 [cabeceras] . Consultado el 9 de junio de 2026 .
- ↑ "Borrador de trabajo, Lenguajes de programación — C++: Módulos de biblioteca de C++" . eel.is. §16.4.2.4 [std.modules] . Consultado el 9 de junio de 2026 .
- ↑ Kreft, Klaus; Langer, Angelika (noviembre-diciembre de 1996). "Iteradores en la biblioteca estándar de C++" . C++ Report . Consultado el 9 de junio de 2026 .
- ↑ "Obras completas de Alexander A. Stepanov" . stepanovpapers.com . Biblioteca de plantillas estándar de C++ . Consultado el 9 de junio de 2026 .
- ↑ "Directrices básicas de C++" . isocpp.github.io . Archivado del original el 16 de febrero de 2020. Consultado el 9 de febrero de 2020 .
- ↑ "Directrices básicas de C++ - FAQ.6: ¿Han sido aprobadas estas directrices por el comité de estándares ISO C++? ¿Representan el consenso del comité?" . isocpp.github.io . Consultado el 16 de abril de 2026 .
¿Han sido aprobadas estas directrices por el comité de estándares ISO C++? ¿Representan el consenso del comité? No. Estas directrices están fuera del estándar. Su propósito es servir al estándar y mantenerse como directrices actuales sobre cómo usar el estándar C++ actual de manera efectiva. Nuestro objetivo es mantenerlas sincronizadas con el estándar a medida que este evoluciona por parte del comité.
- ↑ "Bjarne Stroustrup anuncia las Directrices básicas de C++: C++ estándar" . isocpp.org . Archivado del original el 11 de mayo de 2020. Consultado el 31 de marzo de 2020 .
- ↑ "Uso de los verificadores de las Directrices básicas de C++" . Microsoft Learn . Archivado del original el 13 de agosto de 2021. Consultado el 31 de marzo de 2020 .
- 1 2 "microsoft/GSL" . 18 de julio de 2021. Archivado del original el 18 de julio de 2021. Recuperado el 18 de julio de 2021 a través de GitHub.
- ↑ "Resumen de ABI de C++" . 20 de marzo de 2001. Archivado del original el 10 de julio de 2018. Consultado el 30 de mayo de 2006 .
- ↑ "Preguntas frecuentes de Bjarne Stroustrup : ¿Es C un subconjunto de C++?" . Archivado del original el 6 de febrero de 2016. Consultado el 5 de mayo de 2014 .
- ↑ "C9X – El nuevo estándar C" . Archivado del original el 21 de junio de 2018. Consultado el 27 de diciembre de 2008 .
- ↑ "Soporte para C++0x en GCC" . Archivado del original el 21 de julio de 2010. Consultado el 12 de octubre de 2010 .
- ↑ "Características principales del lenguaje C++0x en VC10: La tabla" . Archivado del original el 21 de agosto de 2010. Consultado el 12 de octubre de 2010 .
- ↑ "Clang - Estado de C++98, C++11 y C++14" . Clang.llvm.org. 12 de mayo de 2013. Archivado del original el 4 de julio de 2013. Consultado el 10 de junio de 2013 .
- ↑ Bokil, Milind A. (2021). " Escritura de rutinas de ensamblador en programas C/C++ y Java ". ResearchGate. Recuperado el 1 de abril de 2025.
- ↑ De Vilhena, Paulo Emílio; Lahav, Ori; Vafeiadis, Viktor; Raad, Azalea (2024). "Extending the C/C++ Memory Model with Inline Assembly" . Proceedings of the ACM on Programming Languages . 8 : 1081–1107 . arXiv : 2408.17208 . doi : 10.1145/3689749 .
- ↑ Colaboradores de cppreference.com. " Declaración asm ". cppreference.com . Consultado el 1 de abril de 2025.
- ↑ "Ensamblador extendido (usando la colección de compiladores GNU)" . Documentación en línea de GCC . Proyecto GNU . Consultado el 1 de abril de 2025 .
- ↑ Intel Corporation. " Ensamblador en línea ". Guía y referencia para desarrolladores del compilador Intel® C++ Classic , versión 2021.9. Consultado el 1 de abril de 2025.
- ↑ IBM. " Instrucciones de ensamblador en línea (extensión de IBM) ". Documentación de IBM . Consultado el 1 de abril de 2025.
- ↑ "Inline Assembler Overview" . Microsoft Learn . Microsoft . Consultado el 1 de abril de 2025 .
- ↑ "Interfaz entre C y C++ y lenguaje ensamblador" . Texas Instruments . Texas Instruments Incorporated. 23 de febrero de 2025. Consultado el 1 de abril de 2025 .
- ↑ "Enlace de C++ a ASM en GCC" . OSDev Wiki . Consultado el 1 de abril de 2025 .
Lecturas adicionales
- Abrahams, David ; Gurtovoy, Aleksey (2005). Metaprogramación con plantillas en C++: conceptos, herramientas y técnicas de Boost y más allá . Addison-Wesley. ISBN 0-321-22725-5.
- Alexandrescu, Andrei (2001). Diseño moderno de C++: Programación genérica y patrones de diseño aplicados . Addison-Wesley. ISBN 0-201-70431-5.
- Alexandrescu, Andrei ; Sutter, Herb (2004). C++ Design and Coding Standards: Rules and Guidelines for Writing Programs . Addison-Wesley. ISBN 0-321-11358-6.
- Becker, Pete (2006). Extensiones de la biblioteca estándar de C++ : un tutorial y referencia . Addison-Wesley. ISBN 0-321-41299-0.
- Brokken, Frank (2026) [Año de publicación original: 1994]. Anotaciones de C++ . ISBN 978-90-367-0470-0.
- Coplien, James O. (1994) [reimpreso con correcciones, año de publicación original 1992]. Advanced C++: Programming Styles and Idioms . Addison-Wesley. ISBN 0-201-54855-0.
- Dewhurst, Stephen C. (2005). C++ Common Knowledge: Essential Intermediate Programming . Addison-Wesley. ISBN 0-321-32192-8.
- Consejo de la Industria de Tecnologías de la Información (15 de octubre de 2003). Lenguajes de programación – C++ (Segunda edición). Ginebra: ISO/IEC. 14882:2003(E).
- Josuttis, Nicolai M. (2012). La biblioteca estándar de C++, un tutorial y referencia (Segunda edición). Addison-Wesley. ISBN 978-0-321-62321-8.
- Koenig, Andrew ; Moo, Barbara E. (2000). Accelerated C++ – Practical Programming by Example . Addison-Wesley. ISBN 0-201-70353-X.
- Lippman, Stanley B .; Lajoie, Josée; Moo, Bárbara E. (2011). Introducción a C ++ (Quinta ed.). Addison-Wesley. ISBN 978-0-321-71411-4.
- Lippman, Stanley B. (1996). Inside the C++ Object Model . Addison-Wesley. ISBN 0-201-83454-5.
- Meyers, Scott (2005). Effective C++ (Tercera ed.). Addison-Wesley. ISBN 0-321-33487-6.
- Stroustrup, Bjarne (2013). El lenguaje de programación C++ (Cuarta ed.). Addison-Wesley. ISBN 978-0-321-56384-2.
- Stroustrup, Bjarne (1994). El diseño y la evolución de C++ . Addison-Wesley. ISBN 0-201-54330-3.
- Stroustrup, Bjarne (2014). Programación: Principios y práctica con C++ (Segunda edición). Addison-Wesley. ISBN 978-0-321-99278-9.
- Sutter, Herb (2001). More Exceptional C++: 40 New Engineering Puzzles, Programming Problems, and Solutions . Addison-Wesley. ISBN 0-201-70434-X.
- Sutter, Herb (2004). Estilo excepcional de C++ . Addison-Wesley. ISBN 0-201-76042-8.
- Vandevoorde, David; Josuttis, Nicolai M. (2003). Plantillas C++: la guía completa . Addison-Wesley. ISBN 0-201-73484-2.
Enlaces externos
- JTC1/SC22/WG21 – Grupo de trabajo sobre el estándar C++ de ISO/IEC
- Standard C++ Foundation es una organización sin ánimo de lucro que promueve el uso y la comprensión del estándar C++. Bjarne Stroustrup es director de la organización.
- Palabras clave de C++
- Expresiones de C++
- Precedencia de operadores en C++
- C++
- Familia de lenguajes de programación Algol
- Familia de lenguajes de programación C++
- Lenguajes de programación basados en clases
- Software multiplataforma
- Lenguajes de programación de alto nivel
- Lenguajes de programación orientados a objetos
- Lenguajes de programación creados en 1983
- Lenguajes de programación con un estándar ISO
- Lenguajes de programación de tipado estático
- Lenguajes de programación compilados
