PRÓLOGO XVCAPÍTULO 1.PROGRAMACIÓN ORIENTADA A OBJETOS
PENSAR EN OBJETOS.2
Clases y objetos.2
Mensajes y métodos.3
DISEÑO DE UNA CLASE DE OBJETOS.4
CONSTRUCTORES.12
HERENCIA.14
EJERCICIOS RESUELTOS.21
EJERCICIOS PROPUESTOS
CAPÍTULO 2.QUÉ APORTA C++
HISTORIA DEL LENGUAJE C++.27
RESUMEN DE LA BIBLIOTECA DE C++.29
Entrada/salida.29
Cadenas.30
Contenedores.30
Iteradores.30
Algoritmos.30
Números.31
Diagnósticos.31
Utilidades generales.31
Localización.31
Soporte del lenguaje.31
C++ PARA PROGRAMADORES DE C.32
Funciones.32
Palabras reservadas nuevas.33
Comentarios.33
Operadores C++.34
Prioridad y orden de evaluación.35
Conversión explícita del tipo de una expresión.35
Conversión del tipo void *.37
Tipos de datos predefinidos.38
Tipos de datos definidos por el usuario.38
Identificadores y estructuras.39
Ámbito de una estructura.40
Declaración de constantes.40
Calificador volatile.42
Flexibilidad en las declaraciones.42
Declaración en una sentencia.43
El operador de resolución del ámbito (::).44
Especificaciones de enlace.44
PARÁMETROS POR OMISIÓN EN UNA FUNCIÓN.47
FUNCIONES EN LÍNEA.48
MACROS.49
FUNCIONES SOBRECARGADAS.50
Ambigüedades.52
OPERADORES SOBRECARGADOS.53
REFERENCIAS.54
PASO DE PARÁMETROS POR REFERENCIA.56
REFERENCIA COMO VALOR RETORNADO.58
TIPO BOOL.60
CLASES.60
PLANTILLAS.60
ESPACIOS DE NOMBRES.60
Directriz using.61
ENTRADA Y SALIDA.62
Flujos de salida.64
Flujos de entrada.65
Estado de un flujo.66
Limpiar el búfer asociado con un flujo.68
Entrada/salida con formato.70
Entrada de caracteres.74
Entrada de cadenas de caracteres.75
CONTENEDORES.76
Vector.76
Acceso a los elementos.77
Iteradores.78
Tamaño.78
Eliminar elementos.78
Buscar elementos.79
Insertar elementos.79
Comparaciones.79
Map.80
String.81
Constructores.81
Iteradores.81
Acceso a un carácter.82
Asignación.82
Conversiones a cadenas estilo C.82
Comparaciones.83
Inserción.84
Concatenación.84
Búsqueda.85
Reemplazar.85
Subcadenas.85
Tamaño.85
Operaciones de E/S.86
EXCEPCIONES.87
LOS OPERADORES new Y delete.89
Operador new.89
Memoria insuficiente.92
Función set_new_handler.92
Operador delete.94
Lagunas de memoria.95
EJERCICIOS RESUELTOS.96
EJERCICIOS PROPUESTOS
CAPÍTULO 3.CLASES
DEFINICIÓN DE UNA CLASE.99
Atributos.101
Métodos de una clase.102
Control de acceso a los miembros de la clase.103
Acceso público.105
Acceso privado.105
Acceso protegido.105
Clases en ficheros de cabecera.105
IMPLEMENTACIÓN DE UNA CLASE.109
MÉTODOS SOBRECARGADOS.112
PARÁMETROS CON VALORES POR OMISIÓN.114
IMPLEMENTACIÓN DE UNA APLICACIÓN.115
EL PUNTERO IMPLÍCITO this.116
MÉTODOS Y OBJETOS CONSTANTES.118
INICIACIÓN DE UN OBJETO.120
Constructor.122
Asignación de objetos.126
Constructor copia.127
DESTRUCCIÓN DE OBJETOS.128
Destructor.129
PUNTEROS COMO ATRIBUTOS DE UNA CLASE.130
MIEMBROS STATIC DE UNA CLASE.139
Atributos static.139
Acceder a los atributos static.141
Métodos static.142
ATRIBUTOS QUE SON OBJETOS.144
CLASES INTERNAS.146
INTEGRIDAD DE LOS DATOS.148
DEVOLVER UN PUNTERO O UNA REFERENCIA.150
MATRICES DE OBJETOS.151
FUNCIONES AMIGAS DE UNA CLASE.161
PUNTEROS A MIEMBROS DE UNA CLASE.164
EJERCICIOS RESUELTOS.168
EJERCICIOS PROPUESTOS
CAPÍTULO 4.OPERADORES SOBRECARGADOS
SOBRECARGAR UN OPERADOR.193
UNA CLASE PARA NÚMEROS RACIONALES.200
SOBRECARGA DE OPERADORES BINARIOS.202
Sobrecarga de operadores asignación.202
Sobrecarga de operadores aritméticos.205
Aritmética mixta.206
Sobrecarga de operadores de relación.208
Métodos adicionales.208
Sobrecarga del operador de inserción.209
Sobrecarga del operador de extracción.212
SOBRECARGA DE OPERADORES UNARIOS.214
Incremento y decremento.215
Operadores unarios/binarios.216
CONVERSIÓN DE TIPOS DEFINIDOS POR EL USUARIO.217
Conversión mediante constructores.218
Operadores de conversión.219
Ambigüedades.223
ASIGNACIÓN.223
INDEXACIÓN.225
LLAMADA A FUNCIÓN.226
DESREFERENCIA.228
SOBRECARGA DE LOS OPERADORES new y delete.230
Sobrecarga del operador new.230
Sobrecarga del operador delete.233
EJERCICIOS RESUELTOS.235
EJERCICIOS PROPUESTOS
CAPÍTULO 5.CLASES DERIVADAS
CLASES DERIVADAS Y HERENCIA.256
DEFINIR UNA CLASE DERIVADA.260
Control de acceso a la clase base.261
Control de acceso a los miembros de las clases.262
Qué miembros hereda una clase derivada.263
ATRIBUTOS CON EL MISMO NOMBRE.268
REDEFINIR MÉTODOS DE LA CLASE BASE.270
CONSTRUCTORES DE CLASES DERIVADAS.272
COPIA DE OBJETOS.275
DESTRUCTORES DE CLASES DERIVADAS.278
JERARQUÍA DE CLASES.278
FUNCIONES AMIGAS.287
PUNTEROS Y REFERENCIAS.288
Conversiones implícitas.289
Restricciones.291
Conversiones explícitas.292
MÉTODOS VIRTUALES.294
Cómo son implementados los métodos virtuales.298
Constructores virtuales.300
Destructores virtuales.303
INFORMACIÓN DE TIPOS DURANTE LA EJECUCIÓN.304
Operador dynamic_cast.304
Operador typeid.307
POLIMORFISMO.308
CLASES ABSTRACTAS.323
HERENCIA MÚLTIPLE.324
Clases base virtuales.328
Redefinición de métodos de bases virtuales.332
Conversiones entre clases.334
EJERCICIOS RESUELTOS.335
EJERCICIOS PROPUESTOS
CAPÍTULO 6.PLANTILLAS
DEFINICIÓN DE UNA PLANTILLA.352
FUNCIONES GENÉRICAS.354
Especialización de plantillas de función.358
Sobrecarga de plantillas de función.360
ORGANIZACIÓN DEL CÓDIGO DE LAS PLANTILLAS.362
Fichero único.362
Fichero de declaraciones y fichero de definiciones.363
Fichero único combinación de otros.365
CLASES GENÉRICAS.366
Declaración previa de una clase genérica.371
Especialización de plantillas de clase.371
Derivación de plantillas.377
Otras características de las plantillas.380
EJERCICIOS RESUELTOS.383
EJERCICIOS PROPUESTOS
CAPÍTULO 7.EXCEPCIONES
EXCEPCIONES DE C++.397
MANEJAR EXCEPCIONES.400
Lanzar una excepción.401
Capturar una excepción.401
Excepciones derivadas.403
Capturar cualquier excepción.404
Relanzar una excepción.405
CREAR EXCEPCIONES.405
Especificación de excepciones.406
Excepciones no esperadas.407
FLUJO DE EJECUCIÓN.409
CUÁNDO UTILIZAR EXCEPCIONES Y CUÁNDO NO.412
ADQUISICIÓN DE RECURSOS.413
Punteros automáticos.418
EJERCICIOS RESUELTOS.422
EJERCICIOS PROPUESTOS
CAPÍTULO 8.FLUJOS
VISIÓN GENERAL DE LOS FLUJOS DE E/S.433
BÚFERES.434
DESCRIPCIÓN DE LOS BÚFERES Y FLUJOS.436
Clase streambuf.436
Clase filebuf.436
Clase ostream.439
Clase istream.441
Clase iostream.443
Clase ofstream.444
Clase ifstream.445
Clase fstream.447
E/S CARÁCTER A CARÁCTER.448
E/S DE CADENAS DE CARACTERES.450
ENTRADA/SALIDA CON FORMATO.452
E/S UTILIZANDO REGISTROS.454
ABRIENDO FICHEROS PARA ACCESO SECUENCIAL.455
Un ejemplo de acceso secuencial.455
ESCRIBIR DATOS EN LA IMPRESORA.466
ACCESO ALEATORIO A FICHEROS EN EL DISCO.466
CADENAS DE CARACTERES.472
Un ejemplo con flujos de cadena.473
EJERCICIOS RESUELTOS.478
EJERCICIOS PROPUESTOS
CAPÍTULO 9.HILOS
CONCEPTO DE PROCESO.497
HILOS.502
Estados de un hilo.504
Cuándo se debe crear un hilo.505
BIBLIOTECAS C/C++ PARA PROGRAMAR CON HILOS.505
Biblioteca estándar POSIX Threads.506
CREACIÓN Y DESTRUCCIÓN DE HILOS.508
Espera activa y pasiva.513
Pasar argumentos a un hilo.513
Finalizar un hilo.516
Cancelación.518
SINCRONIZACIÓN DE HILOS.518
Secciones críticas.520
Exclusión mutua.524
Mutex reentrante.528
Semáforos.529
Problema del productor-consumidor con semáforos.531
Variables de condición.533
Problema del productor-consumidor.537
PLANIFICACIÓN DE HILOS.541
INTERBLOQUEO.543
OBJETOS QUE SON HILOS.543
EJERCICIOS RESUELTOS.547
EJERCICIOS PROPUESTOS
APÉNDICES, ÍNDICE E INSTALACIÓN
A.LA BIBLIOTECA DE C.557
B.ENTORNOS DE DESARROLLO.583
C.INSTALACIÓN DEL PAQUETE DE DESARROLLO.597
D.CÓDIGOS DE CARACTERES.603
ÍNDICE.609
INSTALACIÓN