⚙️ C++ Desde Cero - Guía Completa

Aprende C++ desde los fundamentos hasta conceptos avanzados

"C++ is a general-purpose programming language created by Bjarne Stroustrup as an extension of the C programming language."
Explorar Temas

📖 Temas del Curso

Haz clic en cualquier tema para ver el contenido detallado

📌 Introducción a C++

C++ es un lenguaje de programación de propósito general creado por Bjarne Stroustrup como una extensión de C.

Características:

  • Programación orientada a objetos
  • Alto rendimiento
  • Compatibilidad con C
  • Plantillas y genéricos
💡 Dato curioso: C++ es uno de los lenguajes más usados en desarrollo de videojuegos y sistemas embebidos.
← Volver a temas

🔧 Compiladores

Los compiladores más usados son GCC, Clang y MSVC.

g++ main.cpp -o programa
clang++ main.cpp -o programa
← Volver a temas

📦 CMake

CMake es un sistema de build cross-platform.

cmake_minimum_required(VERSION 3.10)
project(MiProyecto)
add_executable(mi_app main.cpp)
← Volver a temas

📦 Variables y Tipos

C++ tiene tipado estático y fuerte.

int edad = 30;
double altura = 1.75;
auto nombre = std::string("Juan");
← Volver a temas

🏗️ POO en C++

C++ soporta clases, herencia y polimorfismo.

class Persona {
public:
    std::string nombre;
    void saludar() { std::cout << "Hola"; }
};
← Volver a temas

📐 Templates

Las plantillas permiten código genérico.

template<typename T>
T maximo(T a, T b) {
    return (a > b) ? a : b;
}
← Volver a temas

📚 STL

La Standard Template Library incluye contenedores y algoritmos.

std::vector<int> nums = {1, 2, 3};
std::sort(nums.begin(), nums.end());
← Volver a temas

🧠 Smart Pointers

Gestión automática de memoria.

auto ptr = std::make_unique<int>(42);
auto shared = std::make_shared<int>(42);
← Volver a temas

🧵 Multithreading

C++11 incluye soporte para hilos.

#include <thread>
std::thread t([](){ /* código */ });
t.join();
← Volver a temas

⚡ Async

Programación asíncrona con futures.

auto future = std::async([](){ return 42; });
int result = future.get();
← Volver a temas

🌐 Redes

Sockets para comunicación en red.

// Usar bibliotecas como Boost.Asio
// o sockets nativos del SO
← Volver a temas

⚡ Optimización

Técnicas para máximo rendimiento.

  • Inline functions
  • Move semantics
  • Cache optimization
← Volver a temas

📚 Contenido del Curso

Módulo 1: Fundamentos

  • Introducción a C++
  • Compiladores (GCC, Clang, MSVC)
  • CMake y gestión de proyectos
  • Variables y tipos de datos
Ir a temas →

Módulo 2: Intermedio

  • Programación orientada a objetos
  • Templates y genéricos
  • STL (Standard Template Library)
  • Smart pointers
Ir a temas →

Módulo 3: Avanzado

  • Multithreading
  • Programación asíncrona
  • Redes y sockets
  • Optimización de rendimiento
Ir a temas →

📝 Ejemplos Rápidos

Variables y Tipos

#include <iostream>
#include <string>

int main() {
    // Tipos fundamentales
    int edad = 30;
    double altura = 1.75;
    char inicial = 'J';
    bool esEstudiante = true;

    // Auto type deduction
    auto nombre = std::string("Juan");
    auto pi = 3.14159;

    std::cout << "Hola " << nombre << std::endl;
    return 0;
}

Punteros y Referencias

#include <iostream>

int main() {
    int valor = 42;

    // Puntero
    int* ptr = &valor;
    std::cout << *ptr << std::endl;

    // Referencia
    int& ref = valor;
    ref = 100;

    // Smart pointers (C++11)
    auto unique = std::make_unique<int>(42);
    auto shared = std::make_shared<int>(42);

    return 0;
}

Clases

#include <iostream>
#include <string>

class Persona {
private:
    std::string nombre;
    int edad;

public:
    // Constructor
    Persona(std::string n, int e) : nombre(n), edad(e) {}

    // Métodos
    void saludar() const {
        std::cout << "Hola, soy " << nombre << std::endl;
    }

    // Getters/Setters
    std::string getNombre() const { return nombre; }
    void setEdad(int e) { edad = e; }
};

Templates

#include <iostream>
#include <vector>

// Función template
template<typename T>
T maximo(T a, T b) {
    return (a > b) ? a : b;
}

// Clase template
template<typename T>
class Contenedor {
private:
    T valor;
public:
    Contenedor(T v) : valor(v) {}
    T getValor() const { return valor; }
};

Comandos de Compilación

# Compilar simple
g++ main.cpp -o programa

# Compilar con C++17
g++ -std=c++17 main.cpp -o programa

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

# Usar CMake
mkdir build && cd build
cmake ..
make

📖 Recursos Adicionales

Documentación Oficial

Herramientas

  • CMake - Build system
  • CLion - IDE de JetBrains
  • Visual Studio - IDE completo

Comunidades

👨‍💻 Desarrollado por Isaac Esteban Haro Torres

Ingeniero en Sistemas · Full Stack · Automatización · Data

📧 Email: zackharo1@gmail.com

📱 WhatsApp: 098805517

💻 GitHub: github.com/ieharo1

🌐 Portafolio: ieharo1.github.io/portafolio-isaac.haro/