</>waridocu

C++

¿Qué es C++?

Introducción breve a C++, sus orígenes, para qué se usa hoy y por qué sigue siendo relevante.

cppintroduccionhistoriaparadigmas

¿Qué es exactamente?

C++ es un lenguaje de programación de propósito general, compilado y de tipado estático, creado como una extensión de C que añade soporte para programación orientada a objetos, genérica y, más recientemente, funcional. Combina control de bajo nivel sobre la memoria y el hardware con abstracciones de alto nivel, lo que lo convierte en una herramienta poco habitual: rápido como C, pero expresivo como los lenguajes modernos.

Nota

Los archivos fuente de C++ suelen usar las extensiones .cpp, .cc, .cxx o .C, y los archivos de cabecera .h o .hpp. Todas son equivalentes para el compilador; la elección es cuestión de convención del proyecto.

Tip

Vas a ver std::algo en prácticamente todos los ejemplos de esta documentación, incluso antes de que se explique en detalle. Si en algún momento te encuentras con algo de std:: (o con std::vector, std::array) que todavía no se explicó, la sección Standard Library — más adelante en este mismo índice — cubre qué es y qué trae. No hace falta que la leas ahora: es la página a la que volver cuando algo de std:: no te haga sentido.

Orígenes e historia

C++ fue creado por Bjarne Stroustrup en los laboratorios Bell a finales de los años 70, inicialmente bajo el nombre “C with Classes”. El objetivo era añadir el concepto de clases (inspirado en Simula) a la eficiencia de C. El nombre “C++” apareció en 1983, como un juego de palabras con el operador de incremento ++.

Desde entonces el lenguaje se ha estandarizado por el comité ISO, con revisiones importantes cada pocos años:

EstándarAñoNovedades destacadas
C++981998Primer estándar formal, plantillas, STL
C++112011auto, lambdas, smart pointers, move semantics
C++142014Mejoras menores sobre C++11
C++172017std::optional, if constexpr, structured bindings
C++202020Concepts, coroutines, módulos, ranges
C++232023Mejoras a ranges, std::expected, ajustes de STL

Paradigmas que soporta

C++ es multiparadigma: no obliga a un único estilo de diseño. Entre los enfoques que conviven en el mismo lenguaje están:

  • Programación estructurada: heredada directamente de C.
  • Programación orientada a objetos: clases, herencia, polimorfismo virtual.
  • Programación genérica: plantillas (templates) que permiten escribir código independiente del tipo.
  • Programación funcional: lambdas, std::function, algoritmos de la STL con predicados.

¿Dónde se usa hoy?

A pesar de tener más de cuatro décadas, C++ sigue siendo el lenguaje elegido cuando el rendimiento y el control de recursos importan:

  • Motores de videojuegos (Unreal Engine, id Tech, motores propietarios).
  • Sistemas operativos y drivers.
  • Software financiero de baja latencia (trading de alta frecuencia).
  • Aplicaciones de escritorio pesadas (navegadores, editores, IDEs).
  • Sistemas embebidos y robótica.
  • Herramientas de audio, video y renderizado en tiempo real.

Comparación rápida C vs C++

CaracterísticaCC++
ParadigmaEstructuradoMultiparadigma (OOP, genérico, funcional)
Gestión de memoriaManual (malloc/free)Manual, RAII o smart pointers
Sobrecarga de funcionesNo
Plantillas / genéricosNoSí (template)
Biblioteca estándarlibcSTL (contenedores, algoritmos, <iostream>)

Un primer vistazo al código

Ejemplo: Hola Mundo en C++cpp
#include <iostream>

int main() {
    std::cout << "Hola, mundo desde C++" << std::endl;
    return 0;
}

Aunque parezca un ejemplo trivial, ya muestra varias particularidades del lenguaje frente a C: el uso de std::cout (parte de la biblioteca estándar de flujos) en lugar de printf, y el espacio de nombres std, que agrupa toda la biblioteca estándar para evitar colisiones de nombres.

Tip

Si quieres compilar y correr este ejemplo tú mismo pero todavía no tienes g++ instalado, la página de instalación y uso del compilador cubre Windows, macOS y Linux paso a paso.

¿Por qué aprender C++ en 2026?

  • Sigue siendo la base de la mayoría de motores gráficos y de videojuegos, incluido Dear ImGui, que usaremos más adelante en esta documentación.
  • El estándar moderno (C++11 en adelante) es mucho más seguro y expresivo que el C++ “clásico” que mucha gente todavía imagina.
  • Entender C++ facilita aprender otros lenguajes de sistemas (Rust, C) y comprender mejor cómo funciona el hardware por debajo de las abstracciones.
Tip

Si vienes de un lenguaje con recolector de basura (Python, JavaScript, C#), el mayor cambio mental no es la sintaxis: es aprender a razonar sobre quién es responsable de liberar cada recurso. Ahí es donde entran conceptos como RAII y los smart pointers.