C++ Guia de Autoenseñanza

Share Embed Donate


Short Description

C++ Guia de Autoenseñanza...

Description

CONSULTORES EDITORIALES AREA DE INFORMATICA Y COMPUTACION Antonio Vaquero Sanchez Catedrhtico de InformAtica Facultad de Ciencias Fisicas Universidad Complutense de Madrid ESPANA

Gerard0 Quiroz Vieyra Ingeniero en Comunicaciones y Electrdnica Escuela Superior de Ingenieria Mecgnica y Electrdnica IPN Carter Wallace, S. A. Universidad Autdnoma Metropolitana Docente DCSA MEXICO

C++ Gul'a de autoensefianza Herbert Schildt Traduccih: CARLOS CERVIGON RUCKAUER Licenciado en Informhtica

Revisih tCcnica: ANTONIO VAQUERO SANCHEZ Catedrhtico de Informhtica Facultad de Ciencias Fisicas Universidad Complutense de Madrid LUIS HERNANDEZ YANEZ Profesor Titular de Lenguajes y Sistemas Informhticos Facultad de Ciencias Fisicas UniversidaXd Complutense de Madrid

OsborneMcGraw-Hill

-

MADRID * BUENOS AIRES * CARACAS GUATEMALA LISBOA * MEXICO NUEVA YORK * PANAMA * SAN JUAN SANTAFE DE BOGOTA SANTIAGO SAO PAUL0 AUCKLAND HAMBURG0 LONDRES * MILAN * MONTREAL NUEVA DELHI * PARIS SAN FRANCISCO * SIDNEY SINGAPUR * ST. LOUIS TOKIO TORONTO

C + + . Guia de autoensefianza No estk permitida la reproducci6n total o parcial de este libro, ni su tratamiento informktico, ni la transmisi6n de ninguna forma o por cualquier medio, ya sea electr6nic0, mecknico, por fotocopia, por registro u otros mktodos, sin el permiso previo y por escrito de 10s titulares del Copyright. DERECHOS RESERVADOS 0 1995, respecto a la primera edicidn en espaiiol, por McGRAW-HILLANTERAMERICANA DE ESPANA, S. A. U. Edificio Valrealty, 1.& planta Basauri, 17 28023 Aravaca (Madrid) Traducido de la primera edici6n en inglCs de Teach Yourself C + + Copyright

0MCMXCV, por

McGraw-Hill, Inc.

ISBN: 0-07-882025-1 ISBN: 84-481-3203-3 Dep6sito legal: M. 14.092-2001 Compuesto e impreso en Fernkndez Ciudad, S. L. PRINTED IN SPAIN

- IMPRESO

EN ESPANA

-

Contenido

Introduccion

ix

1. Una perspectiva de C++

1

1.1. ~ Q u e es la programacion orientada a objetos? 3 1.2. E/S por consola en C++ 6 1.3. Comentarios en C++ 11 1.4. Clases: un primer contact0 12 1.5. Algunas diferencias entre C y C++ 18 1.6. lntroduccion a la sobrecarga de funciones 21 1.7. Palabras clave de C++ 25

2.

lntroduccion a las clases 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 2.7.

3.

27

Funciones constructoras y destructoras 28 Constructores con parametros 35 lntroduccion a la herencia 40 Punteros a objeto 46 Las clases, estructuras y uniones estan relacionadas Funciones insertadas 52 Insercion automatica 56

Profundizacion en las clases 3.1. 3.2. 3.3. 3.4.

47

61

Asignacion de objetos 63 Paso de objetos a funciones 68 Objetos devueltos por funciones 73 lntroduccion a las funciones amigas 76 V

Vi

4.

C++ . Guia de autoenserianza

Arrays, punteros y referencias 4.1. 4.2. 4.3. 4.4. 4.5. 4.6. 4.7. 4.8. 4.9.

5.

Arrays de objetos 87 Us0 de punteros a objetos 91 El punter0 this 92 Us0 de new y delete 95 Mas sobre new y delete 97 Referencias 102 Paso de referencias a objetos 107 Devolucion de referencias 110 Referencias independientes y restricciones

Sobrecarga de funciones 5.1. 5.2. 5.3. 5.4. 5.5. 5.6.

85

113

117

Sobrecarga de funciones constructoras 118 Creacion y us0 de u n constructor de copias 123 El anacronismo overload 131 Utilizacion de argumentos implicitos 131 137 Sobrecarga y ambiguedad Busqueda de la direccion de una funcion sobrecargada

6. lntroduccion a la sobrecarga de operadores 6.1. 6.2. 6.3. 6.4. 6.5. 6.6.

7.

8.

167

Control del acceso a la clase base 170 Us0 de atributos protegidos 174 177 Constructores, destructores y herencia Herencia multiple 183 Clases base virtuales 189

lntroduccion al sistema de E/S de C++ 8.1. 8.2. 8.3. 8.4. 8.5. 8.6.

145

Principios basicos de la sobrecarga de operadores 147 Sobrecarga de operadores binarios 148 154 Sobrecarga de 10s operadores Iogicos y relacionales Sobrecarga de u n operador unario 156 Us0 de funciones operadoras amigas 159 Una vision mas detallada del operador de asignacion 163

Herencia 7.1. 7.2. 7.3. 7.4. 7.5.

141

Algunos principios de €IS en C++ 200 E/S formateada 201 Us0 de width( 1, precision( 1 y fill( 1 207 Us0 de 10s manipuladores de E/S 210 Creacion de insertores propios 212 Creacion de extractores 218

197

9.

Atributos estaticos 296 E/S basada en arrays 300 Us0 de especificaciones de enlace y de la palabra clave asm Creacion de una funcion de conversion 307 309 Diferencias entre C y C++

304

251

Punteros a clases derivadas 252 lntroduccion a las funciones virtuales Mas sobre funciones virtuales 261 Aplicacion de polimorfismo 264

254

Plantillas y manejo de excepciones 11.1. 11.2. 11.3. 11.4.

Funciones genericas 272 Clases genericas 277 Manejo de excepciones 282 Mas sobre manejo de excepciones

12. Temas diversos 12.1. 12.2. 12.3. 12.4. 12.5.

A.

223

Creacion de manipuladores propios 224 228 Principios de E/S en archivos E/S binaria sin formato 234 238 Mas sobre funciones de E/S binarias Acceso aleatorio 241 244 Comprobacion del estado de E/S E/S y archivos a medida 247

Funciones virtuales 10.1. 10.2. 10.3. 10.4.

11.

vii

E/S avanzada en C++ 9.1. 9.2. 9.3. 9.4. 9.5. 9.6. 9.7.

10.

Confenido

271

288

295

Palabras reservadas extendidas de C++

6. Respuestas lndice

461

317

313

-

Introduccidn

C + + es la respuesta a1 programador de C que trabaja con Programaci6n Orientada a Objetos (POO). Basado en 10s s6lidos fundamentos de C, C + + afiade el soporte para P O 0 (y otras nuevas caracteristicas) sin perder la capacidad, estilo y flexibilidad de C. De hecho, muchos programadores ven C + + como un > un valor irrelevante . Otra diferencia entre C y C + + que se encontrara habitualmente en programas de C + + tiene que ver con el lugar d6nde se declaran las variables locales. En C, las variables locales se deben declarar s610 a1 principio de un bloque, con prioridad a cualquier sentencia de uacci6n>>.En C + + , las variables locales se pueden declarar en cualquier lugar. Una ventaja de este enfoque es que las variables locales se pueden declarar cerca de donde se utilizan por primera vez, lo que ayuda a prevenir efectos laterales no deseados.

1. En un programa en C es un practica comun declarar main( ) como se muestra aqui si no toma argumentos de linea de 6rdenes: main(void)

Sin embargo, en C++., el us0 de void es redundante e innecesario.

20

C++ . Guia de autoensetianza

2. Este breve programa en C + + no compilari porque la funcidn sum( ) no est5 como prototipo: / / Este programa no se compilara. #include

main ( ) {

int a, b, c; cout > a >> b; c = sum(a, b); cout > i;

I!;

/ / calcula el factorial int j, fact=l; / / variables declaradas despues //de las sentencias de acci6n

for(j=i; j > = l ; j--) fact = fact * j ; cout
View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF