Tabla de contenido

0 Introducción
0.1 Proceso para la obtención de un programa ejecutable
0.1.1 Fichero fuente y programa o código fuente
0.1.2 Interpretes y compiladores
0.1.3 Ficheros objeto, código objeto y compiladores
0.1.4 Librerías o bibliotecas
0.1.5 Ficheros ejecutables y enlazadores
0.1.6 Errores
0.2 Propósito de C y C++
1 Toma de contacto
2 Tipos de variables I
2.1 Sobre la sintaxis
2.2 Tipos fundamentales
2.2.1 Tipo "char" o carácter:
2.2.2 Tipo "int" o entero:
2.2.3 Tipo "long long":
2.2.4 Tipo "float" o coma flotante:
2.2.5 Tipo "bool" o Booleano:
2.2.6 Tipo "double" o coma flotante de doble precisión:
2.2.7 Tipo "void" o sin tipo:
2.2.8 Tipo "enum" o enumerado:
2.3 Palabras reservadas usadas en este capítulo
3 Funciones I: Declaración y definición
3.1 Prototipo de función
3.2 Definición de funciones
3.3 Estructura de un programa C++
3.3.1 Estructuras más complejas
3.4 Palabras reservadas usadas en este capítulo
3.5 Ejercicios del capítulo 3
4 Operadores I
4.1 Operadores aritméticos
4.2 Operadores de asignación
4.3 Operador coma
4.4 Operadores de comparación
4.4.1 Expresiones con operadores de igualdad
4.5 Operadores lógicos
4.5.1 Cortocircuito
4.5.2 Tablas de verdad
4.5.3 Expresiones lógicas frecuentes
4.6 Operador sizeof
4.7 Asociación de operadores binarios
4.7.1 Generalización de cortocircuitos
4.8 Palabras reservadas usadas en este capítulo
4.9 Ejercicios del capítulo 4
5 Sentencias
5.1 Bloques
5.2 Expresiones
5.2.1 Llamadas a función
5.2.2 Asignación
5.2.3 Nula
5.3 Bucles
5.3.1 Bucle "mientras"
5.3.2 Bucle "hacer...mientras"
5.3.3 Bucle "para"
5.4 Etiquetas
5.4.1 Etiquetas de identificación
5.4.2 Etiquetas case y default
5.5 Sentencias de selección
5.5.1 Sentencia if...else
5.5.2 Sentencia switch
5.6 Sentencias de salto
5.6.1 Sentencia de ruptura
5.6.2 Sentencia continue
5.6.3 Sentencia de salto
5.6.4 Sentencia de retorno
5.6.5 Uso de las sentencias de salto y la programación estructurada
5.7 Comentarios
5.8 Palabras reservadas del capítulo 5
5.9 Ejercicios del capítulo 5
6 Declaración de variables
6.1 Cómo se declaran las variables
6.2 Ámbitos
6.3 Ámbito de las variables
6.4 Enmascaramiento de variables
6.5 Operador de ámbito
6.6 Problemas resueltos de capítulos 1 a 6
6.6.1 Ejemplo 6.1
6.6.2 Ejemplo 6.2
6.6.3 Ejemplo 6.3
6.6.4 Ejemplo 6.4
6.6.5 Ejemplo 6.5
7 Normas para la notación
7.1 Constantes int
7.2 Constantes long
7.3 Constantes long long
7.4 Constantes unsigned
7.5 Constantes unsigned long
7.6 Constantes unsigned long long
7.7 Constantes float
7.8 Constantes double
7.9 Constantes long double
7.10 Constantes enteras
7.11 Constantes en punto flotante
7.12 Constantes char
7.12.1 Secuencias de escape
7.13 ¿Por qué es necesaria la notación?
7.14 Ejercicios del capítulo 7
8 Cadenas de caracteres
8.1 Ejercicios del capítulo 8
9 Conversión de tipos
9.1 Conversiones a bool
9.2 Casting: conversiones explícitas de tipo
9.3 Ejemplos capítulos 8 y 9
9.3.1 Ejemplo 9.1
9.3.2 Ejemplo 9.2
9.3.3 Ejemplo 9.3
9.3.4 Ejemplo 9.4
10 Tipos de variables II: Arrays
10.1 Inicialización de arrays
10.2 Operadores con arrays
10.3 Algoritmos de ordenación, método de la burbuja
10.4 Problemas
10.5 Ejercicios del capítulo 10
11 Tipos de objetos III: Estructuras
11.1 Funciones en el interior de estructuras
11.2 Inicialización de estructuras
11.3 Asignación de estructuras
11.4 Arrays de estructuras
11.5 Estructuras anidadas
11.6 Estructuras anónimas
11.7 Operador sizeof con estructuras
11.8 Campos de bits
11.9 Palabras reservadas usadas en este capítulo
11.10 Problemas
11.11 Ejercicios del capítulo 11 Estructuras
11.12 Ejemplos capítulos 10 y 11
11.12.1 Ejemplo 11.1
11.12.2 Ejemplo 11.2
11.12.3 Ejemplo 11.3
11.12.4 Ejemplo 11.4
11.12.5 Ejemplo 11.5
12 Tipos de objetos IV: Punteros 1
12.1 Declaración de punteros
12.2 Obtener punteros a objetos
12.3 Objeto apuntado por un puntero
12.4 Diferencia entre punteros y otros objetos
12.5 Correspondencia entre arrays y punteros
12.6 Operaciones con punteros
12.6.1 Asignación
12.6.2 Operaciones aritméticas
12.6.3 Comparación entre punteros
12.7 Punteros genéricos
12.8 Punteros a estructuras
12.9 Ejemplos
12.10 Objetos dinámicos
12.11 Problemas
12.12 Ejemplos capítulo 12
12.12.1 Ejemplo 12.1
12.12.2 Ejemplo 12.2
12.12.3 Ejemplo 12.3
13 Operadores II: Más operadores
13.1 Operadores de Referencia (&) e Indirección (*)
13.2 Operadores . y ->
13.3 Operador de preprocesador
13.3.1 Directiva define
13.3.2 Directiva include
13.4 Operadores de manejo de memoria new y delete
13.4.1 Operador new
13.4.2 Operador delete
13.5 Palabras reservadas usadas en este capítulo
14 Operadores III: Precedencia
14.1 Ejercicios capítulo 14
15 Funciones II: Parámetros por valor y por referencia
15.1 Referencias a variables
15.2 Pasando parámetros por referencia
15.3 Punteros como parámetros de funciones
15.4 Arrays como parámetros de funciones
15.5 Estructuras como parámetros de funciones
15.6 Funciones que devuelven referencias
16 Tipos de variables V: Uniones
16.1 Estructuras anónimas
16.2 Inicialización de uniones
16.3 Discriminadores
16.4 Funciones dentro de uniones
16.5 Palabras reservadas usadas en este capítulo
16.6 Ejemplos capítulo 16
16.6.1 Ejemplo 16.1
16.6.2 Ejemplo 16.2
16.6.3 Ejemplo 16.3
16.6.4 Ejemplo 16.4
17 Tipos de variables VI: Punteros 2
17.1 Problemas
18 Operadores IV: Más operadores
18.1 Operadores de bits
18.1.1 Ejemplos
18.2 Operador condicional
19 Definición de tipos, tipos derivados
19.1 Ejemplos
19.2 Palabras reservadas usadas en este capítulo
19.3 Ejemplos capítulo 18 y 19
19.3.1 Ejemplo 19.1
19.3.2 Ejemplo 19.2
19.3.3 Ejemplo 19.3
20 Funciones III: más cosas
20.1 Parámetros con valores por defecto
20.2 Funciones con número de argumentos variable
20.2.1 Tipos
20.2.2 Macros
20.2.3 Leer la lista de parámetros
20.3 Argumentos en main
20.4 Funciones inline
20.5 Punteros a funciones
20.5.1 Utilidad de los punteros a funciones
20.5.2 Asignación de punteros a funciones
20.5.3 Llamadas a través de un puntero a función
20.6 Palabras reservadas usadas en este capítulo
21 Funciones IV: Sobrecarga
21.1 Resolución de sobrecarga
21.2 Problema
22 Operadores V: Operadores sobrecargados
22.1 Operadores binarios
22.2 Operadores unitarios
22.2.1 Forma prefija
22.2.2 Forma sufija
22.3 Operador de asignación
22.4 Notación funcional de los operadores
22.5 Palabras reservadas usadas en este capítulo
22.6 Problemas
22.7 Ejemplos capítulo 22
22.7.1 Ejemplo 22.1
22.7.2 Ejemplo 22.2
23 El preprocesador
23.1 Directiva #define
23.2 Directiva #undef
23.3 Directivas #if, #elif, #else y #endif
23.4 Directivas #ifdef e #ifndef
23.5 Directiva #error
23.6 Directiva #include
23.7 Directiva #line
23.8 Directiva #pragma
23.9 Directiva #warning
24 Funciones V: Recursividad
24.1 Otras formas de recursividad
24.2 Ejemplos capítulo 24
24.2.1 Ejemplo 24.1
24.2.2 Ejemplo 24.2
24.2.3 Ejemplo 24.3
24.2.4 Ejemplo 24.4
24.2.5 Ejemplo 24.5
25 Variables VII: Tipos de almacenamiento
25.1 Almacenamiento automático
25.2 Almacenamiento estático
25.3 Almacenamiento externo
25.4 Almacenamiento en registro
25.5 Modificador de almacenamiento constante
25.6 Modificador de almacenamiento volatile
25.7 Modificador de almacenamiento mutable
25.8 Palabras reservadas usadas en este capítulo
26 Espacios con nombre
26.1 Declaraciones y definiciones
26.2 Utilidad
26.3 Espacios anónimos
26.4 Espacio global
26.5 Espacios anidados
26.6 Palabras reservadas usadas en este capítulo
27 Clases I: definiciones
27.1 Definiciones
27.1.1 POO
27.1.2 Objeto
27.1.3 Mensaje
27.1.4 Método
27.1.5 Clase
27.1.6 Interfaz
27.1.7 Herencia
27.1.8 Jerarquía
27.1.9 Polimorfismo
28 Declaración de una clase
28.1 Especificadores de acceso
28.1.1 Acceso privado, private
28.1.2 Acceso público, public
28.1.3 Acceso protegido, protected
28.2 Palabras reservadas usadas en este capítulo
29 Constructores
29.1 Constructor por defecto
29.2 Inicialización de objetos
29.3 Sobrecarga de constructores
29.4 Constructores con argumentos por defecto
29.5 Asignación de objetos
29.6 Constructor copia
30 Destructores
31 El puntero this
31.1 Palabras reservadas usadas en este capítulo
31.2 Ejemplos capítulos 27 a 31
31.2.1 Ejemplo 31.1
31.2.2 Ejemplo 31.2
31.2.3 Ejemplo 31.3
32 Sistema de protección
32.1 Declaraciones friend
32.2 Funciones amigas externas
32.3 Funciones amigas en otras clases
32.4 Clases amigas
32.5 Palabras reservadas usadas en este capítulo
33 Modificadores para miembros
33.1 Funciones en línea (inline)
33.2 Funciones miembro constantes
33.4 Miembros estáticos de una clase (Static)
33.5 Palabras reservadas usadas en este capítulo
34 Más sobre las funciones
34.1 Funciones sobrecargadas
34.2 Funciones con argumentos con valores por defecto
35 Operadores sobrecargados
35.1 Sobrecarga de operadores binarios
35.4 Forma funcional de los operadores
35.5 Sobrecarga de operadores para clases con punteros
35.6 Notas sobre este tema
35.8 Operadores unitarios sufijos
35.9 Operadores unitarios que pueden sobrecargarse
35.10 Operadores de conversión de tipo
35.11 Sobrecarga del operador de indexación []
35.12 Sobrecarga del operador de llamada ()
36 Herencia
36.1 Jerarquía, clases base y clases derivadas
36.2 Derivar clases, sintaxis
36.3 Constructores de clases derivadas
36.4 Inicialización de clases base en constructores
36.5 Inicialización de objetos miembros de clases
36.6 Sobrecarga de constructores de clases derivadas
36.7 Destructores de clases derivadas
37 Funciones virtuales
37.1 Redefinición de funciones en clases derivadas
37.2 Superposición y sobrecarga
37.3 Polimorfismo
37.4 Funciones virtuales
37.5 Destructores virtuales
37.6 Constructores virtuales
37.7 Palabras reservadas usadas en este capítulo
38 Derivación múltiple
38.1 Constructores de clases con herencia múltiple
38.2 Herencia virtual
38.3 Funciones virtuales puras
38.4 Clases abstractas
38.5 Uso de derivación múltiple
39 Trabajar con ficheros
39.1 Crear un fichero de salida, abrir un fichero de entrada
39.2 Ficheros binarios
39.3 Ficheros de acceso aleatorio
39.4 Ficheros de entrada y salida
39.5 Sobrecarga de operadores << y >>
39.6 Comprobar estado de un stream
40 Plantillas
40.1 Sintaxis
40.2 Plantillas de funciones
40.3 Plantilla para Tabla
40.4 Ficheros de cabecera
40.5 Ejemplo de uso de plantilla Tabla
40.5.1 Posibles problemas
40.6 Tablas de cadenas
40.7 Funciones que usan plantillas como parámetros
40.7.1 Pasar una instancia de una plantilla
40.7.2 Pasar una plantilla genérica
40.8 Amigos de plantillas
40.8.1 Clase o función amiga de una plantilla
40.8.2 Clase o función amiga de una instancia de una plantilla
40.9 Miembros estáticos: datos y funciones
40.10 Ejemplo de implementación de una plantilla para una pila
40.11 Bibliotecas de plantillas
40.11.1 Palabras reservadas usadas en este capítulo
40.12 Palabra typename
41 Punteros a miembros de clases o estructuras
41.1 Asignación de valores a punteros a miembro
41.2 Operadores .* y ->*
42 Castings en C++
42.1 Operador static_cast<>
42.2 Operador const_cast<>
42.3 Operador reinterpret_cast<>
42.4 Operador typeid
42.5 Operador dynamic_cast<>
42.5.1 Castings cruzados
43 Manejo de excepciones
43.2 Orden en la captura de excepciones
43.3 Especificaciones de excepciones
43.4 Excepciones en constructores y destructores
43.5 Excepciones estándar
43.6 Relanzar una excepción
A Codificación ASCII
A.1 El origen
A.2 Tabla ASCII
A.3 Las letras son números
A.4 Manejar signos
B Palabras reservadas
B.1 Palabras reservadas C++
B.2 Palabras reservadas C
C Bibliotecas estándar
C.1 Biblioteca de entrada y salida fluidas "iostream"
C.2 Biblioteca C de entrada y salida estándar "stdio.h"
C.2.1 Función getchar()
C.2.2 Función putchar()
C.2.3 Función gets()
C.2.4 Función puts()
C.2.5 Función printf()
C.3 Biblioteca de rutinas de conversión estándar stdlib.h
C.3.1 Función atoi()
C.3.2 Función system()
C.3.3 Función abs()
C.3.4 Función rand()
C.3.5 Función srand()
C.4 Biblioteca de tratamiento de caracteres ctype.h
C.4.1 Función toupper()
C.4.2 Función tolower()
C.4.3 Macros is()
C.5 Biblioteca de manipulación de cadenas string.h
C.5.1 Función strlen()
C.5.2 Función strcpy()
C.5.3 Función strcmp()
C.5.4 Función strcat()
C.5.5 Función strncpy()
C.5.6 Función strncmp()
C.5.7 Función strncat()
C.5.8 Función strtok()
D Trigrafos y símbolos alternativos
D.1 Trigrafos
D.2 Símbolos alternativos
E Streams
E.1 Clases predefinidas para streams
E.2 Clase streambuf
E.2.1 Funciones protegidas
E.3 Clase ios
E.3.1 Enums
E.4 Clase filebuf
E.4.1 Constructores
E.4.2 Funciones
E.5 Clase istream
E.5.1 Constructor
E.6 Clase ostream
E.6.1 Constructor
E.7 Clase iostream
E.7.1 Constructor
E.8 Clase fstreambase
E.8.1 Constructores
E.9 Clase ifstream
E.9.1 Constructores
E.10 Clase ofstream
E.10.1 Constructores
E.11 Clase fstream
E.11.1 Constructores
E.12 Clase strstreambuf
E.12.1 Constructores
E.13 Clase strstreambase
E.13.1 Constructores
E.14 Clase istrstream
E.14.1 Constructores
E.15 Clase ostrfstream
E.15.1 Constructores
E.16 Clase strstream
E.16.1 Constructores
E.17 Objetos predefinidos
E.18 Objeto cout
E.18.1 El operador <<
E.18.2 Funciones interesantes de cout
E.19 Objeto cin
E.19.1 El operador >>
E.19.2 Funciones interesantes de cin