¿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
| C | C++ moderno (C++11/17/20) |
|---|---|
printf/scanf | cout/cin, fmt::print |
malloc/free | new/delete (evitar) o smart pointers |
struct sin métodos | class con métodos, acceso controlado |
Sin sobrecarga de funciones | Sobrecarga por firma completa |
Sin excepciones | try/catch/throw, noexcept |
Sin generics | Templates (compilación estática) |
Sin RAII | Destructores + smart pointers |
Sin lambdas | Lambdas 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.cppParadigma 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)