C++ para niños
Datos para niños C++ |
||
---|---|---|
![]() |
||
![]() |
||
Desarrollador(es) | ||
Bjarne Stroustrup, Laboratorios Bell https://isocpp.org/ y http://www.open-std.org/jtc1/sc22/wg21/ |
||
Información general | ||
Extensiones comunes | .h .hh .hpp .hxx .h++ .cc .cpp .cxx .c++ |
|
Paradigma | Multiparadigma: Programación Estructurada, imperativo, programación genérica | |
Apareció en | 1983 | |
Diseñado por | Bjarne Stroustrup | |
Última versión estable | ISO/IEC 14882:2020 (C++20) (Diciembre de 2020) | |
Última versión en pruebas | C++23 (2023) | |
Sistema de tipos | Fuerte, estático, nominativo | |
Implementaciones | C++ Builder, clang, Comeau C/C++, GCC, Intel C++ Compiler, Microsoft Visual C++, Sun Studio, Code::Blocks, Zinjai | |
Dialectos | ISO/IEC C++ 1998, ISO/IEC C++ 2003, ISO/IEC C++ 2011 | |
Influido por | C, Simula, Ada 83, ALGOL 68, CLU, ML | |
Ha influido a | Perl, LPC, Lua, Pike, Ada 95, Java, PHP, D, C99, C#, Falcon, Carbono | |
Sistema operativo | Multiplataforma | |

C++ es un lenguaje de programación muy popular y potente. Fue creado en 1979 por Bjarne Stroustrup. Su objetivo principal fue mejorar el lenguaje de programación C. Le añadió herramientas para trabajar con "objetos", que son como bloques de construcción de programas.
C++ es un lenguaje "multiparadigma". Esto significa que puedes usar diferentes estilos de programación con él. Por ejemplo, puedes programar usando objetos o de forma más estructurada.
Hoy en día, existe un estándar llamado ISO C++. La mayoría de los programas que traducen el código (llamados compiladores) siguen este estándar.
Contenido
- C++: Un Lenguaje de Programación Poderoso
- Standard Template Library (STL)
- C++11 y versiones futuras
- Diferencias de tipos respecto a C
- Compiladores y entornos de desarrollo
- Véase también
C++: Un Lenguaje de Programación Poderoso
¿Qué es C++ y para qué sirve?
C++ es un lenguaje de programación que se usa para crear muchos tipos de programas. Desde sistemas operativos hasta videojuegos y aplicaciones complejas. Es conocido por ser muy rápido y eficiente.
¿Quién creó C++?
C++ fue diseñado por Bjarne Stroustrup. Él trabajaba en los Laboratorios Bell cuando lo desarrolló. Su idea era mejorar el lenguaje C.
¿Por qué se llama C++?
El nombre "C++" fue sugerido por Rick Mascitti en 1983. Antes, se le conocía como "C con clases". En programación, "++" significa "incrementar" o "añadir uno". Así, "C++" quiere decir que es una versión mejorada o extendida de C.
Características principales de C++
C++ tiene varias características que lo hacen especial:
- Su forma de escribir el código es parecida a la de C.
- Permite la programación orientada a objetos (POO). Esto ayuda a organizar el código en "objetos" que interactúan entre sí.
- Puedes dividir un programa grande en partes más pequeñas. Cada parte se puede compilar por separado.
- Es un lenguaje de alto nivel. Esto significa que es más fácil de entender para los humanos que los lenguajes de bajo nivel.
- Es "portátil". Esto quiere decir que los programas hechos en C++ pueden funcionar en diferentes tipos de computadoras y sistemas operativos.
Un ejemplo sencillo: "Hola mundo" en C++
Aquí tienes un programa muy básico en C++. Solo muestra el mensaje "Hola mundo!" en la pantalla:
#include <iostream>
int main()
{
std::cout << "Hola mundo!" << std::endl;
return 0;
}
- La línea `#include <iostream>` le dice al programa que use una biblioteca. Esta biblioteca ayuda a manejar la entrada y salida de datos (como mostrar texto en pantalla).
- `int main()` es el punto de inicio de cualquier programa en C++. Es la primera parte que se ejecuta.
- `std::cout << "Hola mundo!" << std::endl;` es la instrucción que imprime "Hola mundo!" en la pantalla. `std::cout` significa "salida estándar" (normalmente la pantalla). `std::endl` hace un salto de línea.
- `return 0;` indica que el programa terminó correctamente.
Tipos de datos en C++
En C++, los datos se guardan de diferentes maneras. Cada tipo de dato ocupa un espacio específico en la memoria de la computadora. Aquí están los tipos fundamentales:
- Caracteres: `char` (para letras, números o símbolos), `wchar_t` (para caracteres especiales como los de otros idiomas).
- Números enteros: `short`, `int`, `long`, `long long` (para números sin decimales).
- Números con decimales: `float`, `double`, `long double` (para números con coma flotante).
- Valores lógicos: `bool` (para verdadero o falso).
- Vacío: `void` (indica que no hay un tipo de dato).
El tamaño de estos tipos puede variar según la computadora. Por ejemplo, un `char` siempre ocupa 1 byte (8 bits).
La palabra `void`
La palabra `void` se usa para indicar que algo no tiene un tipo o no devuelve un valor. Por ejemplo, si una función es `void`, significa que no produce un resultado.
void miFuncion (int parametro); // Esta función no devuelve nada
La palabra `NULL`
`NULL` es un valor especial que representa "nada" o "cero". Se usa a menudo para indicar que un puntero (una variable que guarda una dirección de memoria) no apunta a ningún lugar. Para evitar confusiones, en C++ moderno se prefiere usar `nullptr` para punteros.
La función `main()`
Todo programa en C++ debe tener una función principal llamada `main()`. Es el punto de partida donde el programa comienza a ejecutarse.
int main()
{}
Esta función puede recibir información al iniciar el programa, como el número de argumentos y los argumentos mismos. Al final, `main` devuelve un número entero (generalmente 0) para indicar si el programa terminó bien.
El concepto de clase en C++
En la programación orientada a objetos, una clase es como un plano o molde para crear "objetos". Un objeto tiene:
- Identidad: Un nombre que lo distingue.
- Métodos: Acciones que puede realizar (funciones).
- Atributos: Características que lo describen (variables).
Imagina una clase llamada "Perro". Sus atributos podrían ser el color de su pelaje o su tamaño. Sus métodos podrían ser "ladrar" o "correr".
class Punto
{
private:
// Variable privada: solo se puede usar dentro de la clase
int id;
protected:
// Variables protegidas: se pueden usar en la clase y en sus "hijas"
int x;
int y;
public:
// Constructor: se ejecuta al crear un objeto
Punto();
// Destructor: se ejecuta al eliminar un objeto
~Punto();
// Funciones públicas: se pueden usar desde fuera de la clase
int ObtenerX();
int ObtenerY();
};
Constructores
Los constructores son funciones especiales que se activan automáticamente cuando creas un objeto de una clase. Su nombre es el mismo que el de la clase. Sirven para preparar el objeto, por ejemplo, dándole valores iniciales a sus atributos.
class Punto
{
public:
float x;
float y;
Punto() : x(0), y(0){ // Constructor que inicializa x e y a 0
}
};
Destructores
Los destructores son lo opuesto a los constructores. Se ejecutan automáticamente cuando un objeto deja de usarse. Su tarea principal es liberar cualquier recurso que el objeto haya usado. Por ejemplo, si un objeto reservó memoria, el destructor se encarga de liberarla. Esto evita que la memoria quede ocupada sin necesidad, lo que se conoce como "fuga de memoria".
Funciones miembro
Las funciones miembro son las acciones que puede realizar un objeto. Se declaran dentro de la clase. Cuando llamas a una función miembro, siempre lo haces a través de un objeto. Por ejemplo, `miObjeto.miFuncion()`.
Funciones amigas
A veces, una función que no es parte de una clase necesita acceder a sus partes privadas. Para eso, se puede declarar como "función amiga" usando la palabra `friend`.
Plantillas
Las plantillas permiten escribir código que funciona con diferentes tipos de datos sin tener que reescribirlo. Imagina que quieres una función que encuentre el número más grande entre dos. Con una plantilla, puedes hacer que funcione para números enteros, decimales, etc.
template <typename T>
T max(const T &x, const T &y) {
return (x > y) ? x : y; // Si x es mayor que y, devuelve x; si no, devuelve y
}
Aquí, `T` es un tipo de dato genérico. Cuando usas `max(5, 10)`, `T` se convierte en `int`. Si usas `max(3.5, 1.2)`, `T` se convierte en `float`.
Clases abstractas
Una clase abstracta es como un "contrato" o un "modelo" para otras clases. Define qué métodos deben tener las clases que la hereden, pero no los implementa. No puedes crear objetos directamente de una clase abstracta. Solo puedes crear objetos de las clases "hijas" que implementen esos métodos.
Espacios de nombres
Los espacios de nombres (namespaces) ayudan a organizar el código y evitar conflictos de nombres. Si dos partes de un programa usan el mismo nombre para una variable o función, los espacios de nombres las mantienen separadas. El espacio de nombres más común en C++ es `std::`, que contiene muchas funciones y herramientas estándar.
Herencia
La herencia es una característica clave de la programación orientada a objetos. Permite crear una nueva clase (clase "hija") a partir de una clase ya existente (clase "padre"). La clase hija "hereda" las características y comportamientos de la clase padre y puede añadir los suyos propios.
Por ejemplo, si tienes una clase `Barco`, puedes crear una clase `Carguero` que herede de `Barco`. Un `Carguero` "es un" `Barco`, pero también tiene características específicas de un carguero.
Herencia simple
En la herencia simple, una clase hija hereda de una sola clase padre.
class Barco {
protected:
char* nombre;
float peso;
public:
// Funciones de barco
};
class Carguero: public Barco { // Carguero hereda de Barco
private:
float carga;
// Más cosas de Carguero
};
Herencia múltiple
La herencia múltiple permite que una clase herede de varias clases padre. Por ejemplo, una clase `EmpleadoTienda` podría heredar de `Persona` y de `Empleado`.
Sobrecarga de operadores
La sobrecarga de operadores permite cambiar cómo funcionan los operadores (como `+`, `-`, `=`, etc.) para tus propios tipos de datos. Por ejemplo, puedes definir cómo se "suman" dos objetos de tu clase. No puedes crear operadores nuevos, solo cambiar el comportamiento de los existentes.
Standard Template Library (STL)
La STL (Biblioteca de Plantillas Estándar) es una colección de herramientas muy útiles en C++. Incluye:
- Contenedores: Clases para almacenar datos, como `vector` (listas que crecen automáticamente), `deque` (colas dobles) y `map` (para guardar pares de clave-valor).
- Iteradores: Son como punteros inteligentes que te permiten recorrer los elementos de los contenedores.
- Algoritmos: Funciones que realizan operaciones comunes, como ordenar (`sort`) o copiar (`copy`) elementos en los contenedores.
Biblioteca de entrada y salida
C++ tiene clases especiales para manejar la entrada y salida de datos. `std::cout` se usa para mostrar información en la pantalla, y `std::cin` para leer información del teclado. También hay clases para trabajar con archivos (`fstream`) y cadenas de texto (`sstream`).
C++11 y versiones futuras
En 2011, se lanzó una versión importante de C++ llamada C++11. Esta versión añadió muchas características nuevas y emocionantes. Desde entonces, C++ ha seguido evolucionando con nuevas versiones cada pocos años, como C++14, C++17 y C++20. Los desarrolladores de compiladores trabajan constantemente para incluir estas novedades.
Diferencias de tipos respecto a C
En C++, los tipos de datos son más estrictos y únicos que en C. Por ejemplo, los tipos definidos con `struct` o `enum` son tratados como tipos completos en C++, lo que les da más funcionalidades. El tipo `bool` (verdadero/falso) también es un tipo de dato propio en C++, a diferencia de C donde a veces se usaba como un número entero.
Compiladores y entornos de desarrollo
Para escribir y ejecutar programas en C++, necesitas un compilador (que traduce tu código a un lenguaje que la computadora entiende) y un entorno de desarrollo integrado (IDE) (un programa con herramientas para escribir, compilar y depurar código).
Algunos compiladores populares son:
- GCC (con G++)
- Intel C++ Compiler
- Microsoft Visual C++
Algunos IDEs comunes para C++ incluyen:
- Visual Studio Code
- Visual Studio
- Code::Blocks
- Xcode (para macOS)
- Eclipse
- NetBeans
Software Creados y Programados con C++
Muchos programas que usas a diario están hechos con C++. Algunos ejemplos son:
- Microsoft Edge (navegador web)
- Google Chrome (navegador web)
- Opera (navegador) (navegador web)
- Open Broadcaster Software (para grabar y transmitir videos)
- CATIA (software de diseño)
Véase también
En inglés: C++ Facts for Kids
- C
- C++11
- C++14
- C++17