Saltar al contenido principal
C++23 de junio de 202680 min de lectura
Intermedio80 min Full Stack Developer

C++ moderno: cero a avanzado

Tutorial completo de C++ moderno: POO, herencia, polimorfismo, constructores, STL, smart pointers, move semantics y E/S de archivos.

C++POOSTLSmart PointersModerno

Requisitos previos

Lo que aprenderás

  • Aplicar POO: clases, herencia y polimorfismo
  • Usar la STL: vectores, maps, algoritmos
  • Gestionar memoria con smart pointers
  • Dominar move semantics y rvalue references

¿Qué es C++?

C++ es un lenguaje de propósito general creado por Bjarne Stroustrup a principios de los años 80 como extensión de C. Añade programación orientada a objetos (POO), templates (genéricos), gestión automática de recursos (RAII) y la STL. Es un superconjunto de C: casi todo código C válido compila en C++.

Diferencias fundamentales con C

CC++ moderno (C++11/17/20)
printf/scanfcout/cin, fmt::print
malloc/freenew/delete (evitar) o smart pointers
struct sin métodosclass con métodos, acceso controlado
Sin sobrecarga de funcionesSobrecarga por firma completa
Sin excepcionestry/catch/throw, noexcept
Sin genericsTemplates (compilación estática)
Sin RAIIDestructores + smart pointers
Sin lambdasLambdas con captura de entorno

Hola, mundo en C++

#include <iostream>
#include <string>
using namespace std;

int main() {
    string nombre = "Mundo";
    cout << "Hola, " << nombre << "!" << endl;

    // cin para entrada
    int edad;
    cout << "¿Cuántos años tienes? ";
    cin >> edad;
    cout << "Tienes " << edad << " años." << "
";

    return 0;   // opcional en main desde C++11
}

Compilar y ejecutar

# Compilar con G++
g++ -std=c++17 -Wall -Wextra -o programa main.cpp

# Con varios archivos
g++ -std=c++17 -Wall main.cpp utils.cpp -o programa

# Flags útiles en desarrollo
g++ -std=c++17 -Wall -Wextra -fsanitize=address,undefined -g -o programa main.cpp

# Optimización para producción
g++ -std=c++17 -O2 -DNDEBUG -o programa main.cpp

Paradigma OOP

C++ soporta múltiples paradigmas: procedural (como C), orientado a objetos y genérico (templates). La OOP se basa en cuatro pilares:

Encapsulación

Agrupar datos y comportamiento en clases, ocultando los detalles internos

Herencia

Una clase puede extender otra, reutilizando y especializando su comportamiento

Polimorfismo

El mismo código opera sobre diferentes tipos gracias a funciones virtuales

Abstracción

Definir interfaces sin exponer la implementación (clases abstractas)

1 / 8