+ All Categories
Home > Documents > C_Stroustrup

C_Stroustrup

Date post: 01-Jul-2015
Category:
Upload: david-szell
View: 214 times
Download: 0 times
Share this document with a friend
Popular Tags:
1315
I. kötet
Transcript

I. ktet

A kiadvny a kvetkez angol eredeti alapjn kszlt: Bjarne Stroustrup: The C++ Programming Language Special Edition Copyright 2000 by AT&T. All rights reserved. No part of this book, including interior desing, cover design, and icons, may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording, or otherwise) without the prior written permission of the publisher. Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, the publisher states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing upon that trademark. A szerz s a kiad a lehet legnagyobb krltekintssel jrt el e kiadvny elksztsekor. Sem a szerz, sem a kiad nem vllal semminem felelssget vagy garancit a knyv tartalmval, teljessgvel kapcsolatban. Sem a szerz, sem a kiad nem vonhat felelssgre brmilyen baleset vagy kresemny miatt, mely kzvetve vagy kzvetlenl kapcsolatba hozhat e kiadvnnyal. Fordts s magyar vltozat 2001 Szy Gyrgy, Kiskapu Kft. Minden jog fenntartva! Translation and Hungarian edition 2001 Gyrgy Szy, Kiskapu Kft. All rights reserved!Sorozatszerkeszt: Szy Gyrgy Mszaki szerkeszt: Csutak Hoffmann Levente Szakmai lektor: Porkolb Zoltn Lektor: Rzmves Lszl Fordtk: Balzs Ivn Jzsef, Bein Kornl, Ludnyi Levente, Marcinkovics Tams

Felels kiad a Kiskapu Kft. gyvezet igazgatja 2001 Kiskapu Kft. 1081 Budapest Npsznhz u. 31. Tel: (+36-1) 303-9119, (+36-1) 477-0443 Fax: (+36-1) 303-1619 http://www.kiskapu.hu/ e-mail: [email protected] Els ktet ISBN: 963 9301 18 3 sszest ISBN: 963 9301 17 5 Kszlt a debreceni Kinizsi nyomdban Felels vezet: Brds Jnos

Tartalomjegyzk

Bevezets1. fejezet Megjegyzsek az olvashoz1.1. A knyv szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2. Hogyan tanuljuk a C++-t? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.3. A C++ jellemzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.1.1. Pldk s hivatkozsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1.2. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.1.3. Megjegyzs az egyes C++-vltozatokhoz . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4. Trtneti megjegyzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.5. A C++ hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 1.6. C s C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.7. Programozsi megfontolsok a C++-ban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 1.8. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.3.1. Hatkonysg s szerkezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.3.2. Filozfiai megjegyzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.6.1. Javaslatok C programozknak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.6.2. Javaslatok C++ programozknak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.8.1. Hivatkozsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2. fejezet

Kirnduls a C++-ban

2.1. Mi a C++? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.2. Programozsi megkzeltsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3. Eljrskzpont programozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.3.1. Vltozk s aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.3.2. Elgazsok s ciklusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

x

2.4. Modulris programozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.3.3. Mutatk s tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 2.4.1. Kln fordts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.4.2. Kivtelkezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.5.1. 2.5.2. 2.5.3. 2.5.4. 2.5.5. Tpusokat ler modulok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Felhasznli tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Konkrt tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Absztrakt tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Virtulis fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.5. Elvont adatbrzols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.6. Objektumorientlt programozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.7. ltalnostott programozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

2.6.1. Problmk a konkrt tpusokkal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 2.6.2. Osztlyhierarchik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.7.1. Trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 2.7.2. ltalnostott algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

2.8. Utirat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.9. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

3. fejezet

Kirnduls a standard knyvtrban

3.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.2. Hell, vilg! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.3. A standard knyvtr nvtere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.4. Kimenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.5. Karakterlncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.6. Bemenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 3.7. Trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663.7.1. 3.7.2. 3.7.3. 3.7.4. 3.7.5. 3.8.1. 3.8.2. 3.8.3. 3.8.4. 3.8.5. 3.8.6.

3.5.1.C stlus karakterlncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

3.8. Algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72Bejrk hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Bejrtpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Bemeneti s kimeneti bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Bejrsok s prediktumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Tagfggvnyeket hasznl algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . 81 A standard knyvtr algoritmusai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

Vektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Tartomnyellenrzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Asszociatv tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Szabvnyos trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

3.9. Matematika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823.9.1. Komplex szmok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.9.2. Vektoraritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 3.9.3. Alapszint numerikus tmogats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

3.10. A standard knyvtr szolgltatsai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 3.11. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85

xi

Els rsz4. fejezet

AlapokTpusok s deklarcik

4.1. Tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.2. Logikai tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 4.3. Karaktertpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.4. Egsz tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.5. Lebegpontos tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 964.3.1. Karakterliterlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 4.4.1. Egsz literlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 4.5.1. Lebegpontos literlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1.1. Alaptpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

4.6. Mretek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.7. Void . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.8. Felsorol tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 4.9. Deklarcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1024.9.1. 4.9.2. 4.9.3. 4.9.4. 4.9.5. 4.9.6. 4.9.7.

4.10. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 4.11. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113

A deklarcik szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Tbb nv bevezetse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 Nevek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Hatkrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Kezdeti rtkads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Objektumok s balrtkek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 Typedef . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

5. fejezet

Mutatk, tmbk s struktrk

5.1. Mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 5.2. Tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.3. Tmbkre hivatkoz mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

5.1.1. Nulla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 5.2.1. Tmbk feltltse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.2.2. Karakterliterlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.3.1. Tmbk bejrsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 5.4.1. Mutatk s konstansok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

5.4. Konstansok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

5.5. Referencik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.6. Void-ra hivatkoz mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 5.7. Struktrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 5.8. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.9. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

5.7.1. Egyenrtk tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138

xii

6. fejezet6.1.1. 6.1.2. 6.1.3. 6.1.4. 6.1.5. 6.1.6. 6.1.7. 6.1.8.

Kifejezsek s utastsokAz elemz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 A bemeneti fggvny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 Alacsonyszint bemenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Hibakezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 A vezrl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Fejllomnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Parancssori paramterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Megjegyzs a stlussal kapcsolatban . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

6.1. Egy asztali szmolgp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

6.2. Opertorok ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158

6.3. Utastsok ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

6.2.1. Eredmnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 6.2.2. Kirtkelsi sorrend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 6.2.3. Az opertorok sorrendje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 6.2.4. Bitenknti logikai mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.2.5. Nvels s cskkents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 6.2.6. Szabad tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 6.2.6.1. Tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.2.6.2. Memria-kimerls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 6.2.7. Meghatrozott tpuskonverzik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 6.2.8. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175 6.3.1. Deklarcik mint utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 6.3.2. Kivlaszt utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 6.3.2.1. Deklarcik felttelekben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 6.3.3. Ciklusutastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 6.3.3.1. Deklarcik a for utastsban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 6.3.4. Goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183

6.4. Megjegyzsek s behzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 6.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 6.6. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

7. fejezet

Fggvnyek

7.1. Fggvnydeklarcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 7.2. Paramtertads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194

7.1.1. Fggvnydefincik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 7.1.2. Statikus vltozk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 7.2.1. Tmb paramterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

7.3. Visszatrsi rtk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 7.4. Tlterhelt fggvnynevek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1997.4.1. 7.4.2. 7.4.3. 7.4.4.

7.5. Alaprtelmezett paramterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205 7.6. Nem meghatrozott szm paramter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206

A tlterhels s a visszatrsi tpus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A tlterhels s a hatkr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 A tbbrtelmsg kzi feloldsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Tbb paramter feloldsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

xiii

7.7. Fggvnyre hivatkoz mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.8. Makrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 7.9. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.10. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2187.8.1. Feltteles fordts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217

8. fejezet

Nvterek s kivtelek

8.1. Modulok s felletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 8.2. Nvterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

8.3. Kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248

8.2.1. Minstett nevek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 8.2.2. Using deklarcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 8.2.3. Using direktvk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 8.2.4. Tbb fellet hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 8.2.4.1. Fellettervezsi mdszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 8.2.5. A nvtkzsek elkerlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 8.2.5.1. Nvtelen nvterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 8.2.6. Nevek keresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 8.2.7. Nvtr-lnevek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 8.2.8. Nvterek sszefzse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 8.2.8.1. Kivlaszts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 8.2.8.2. sszefzs s kivlaszts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242 8.2.9. Nvterek s rgi kdok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 8.2.9.1. Nvterek s a C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 8.2.9.2. Nvterek s tlterhels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 8.2.9.3. A nvterek nyitottak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.3.1. Dobs s elkaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249 8.3.2. A kivtelek megklnbztetse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 8.3.3. Kivtelek a szmolgpben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253 8.3.3.1. Ms hibakezel mdszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256

8.4. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 8.5. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258

9. fejezet

Forrsfjlok s programok

9.1. Kln fordts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261 9.2. sszeszerkeszts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

9.3. Fejllomnyok hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276

9.2.1. Fejllomnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 9.2.2. A standard knyvtr fejllomnyai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 9.2.3. Az egyszeri definils szablya . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 9.2.4. sszeszerkeszts nem C++ kddal . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 9.2.5. Az sszeszerkeszts s a fggvnyekre hivatkoz mutatk . . . . . . . . . . . 275 9.3.1. Egyetlen fejllomnyos elrendezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276 9.3.2. Tbb fejllomnyos elrendezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280 9.3.2.1. A szmolgp egyb moduljai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282 9.3.2.2. A fejllomnyok hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 9.3.3. llomny-rszemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286

xiv

9.4. Programok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

9.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 9.6. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291

9.4.1. Kezdeti rtkads nem loklis vltozknak . . . . . . . . . . . . . . . . . . . . . . . . 288 9.4.1.1. A program befejezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

Msodik rsz Absztrakcis mdszerek10. fejezet Osztlyok10.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295 10.2. Osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296

10.3. Hatkony felhasznli tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31110.3.1. 10.3.2. 10.3.3. 10.3.4.

10.2.1. Tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296 10.2.2. Az elrhetsg szablyozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 10.2.3. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 10.2.4. Statikus tagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.2.5. Osztly tpus objektumok msolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 10.2.6. Konstans tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 10.2.7. nhivatkozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 10.2.7.1. Fizikai s logikai konstansok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 10.2.7.2. A mutable minst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 10.2.8. Struktrk s osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 10.2.9. Osztlyon belli fggvnydefincik . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310 Tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 Segdfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 Opertorok tlterhelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 A konkrt osztlyok jelentsge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

10.4. Objektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

10.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 10.6. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340

10.4.1. Destruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 10.4.2. Alaprtelmezett konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 10.4.3. Ltrehozs s megsemmists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322 10.4.4. Loklis vltozk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.4.4.1. Objektumok msolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 10.4.5. A szabad tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 10.4.6. Osztly tpus tagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.4.6.1. A tagok szksgszer kezdeti rtkadsa . . . . . . . . . . . . . . . . . . . . . . . . 327 10.4.6.2. Konstans tagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 10.4.6.3. Tagok msolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 10.4.7. Tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 330 10.4.8. Loklis statikus adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.4.9. Nem loklis adatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.4.10. Ideiglenes objektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 10.4.11. Az objektumok elhelyezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 10.4.12. Unik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339

xv

11. fejezet11.2.1. 11.2.2. 11.2.3. 11.2.4. 11.3.1. 11.3.2. 11.3.3. 11.3.4. 11.3.5. 11.3.6. 11.3.7. 11.3.8.

Opertorok tlterhelseEgy- s ktoperandus mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Az opertorok elre meghatrozott jelentse . . . . . . . . . . . . . . . . . . . . . 347 Opertorok s felhasznli tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348 Nvterek opertorai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Tag s nem tag opertorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 Vegyes md aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 Kezdeti rtkads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 Msols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356 Konstruktorok s konverzik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Literlok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Kiegszt tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 Segdfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

11.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 344 11.2. Opertor fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345

11.3. Komplex szm tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

11.4. Konverzis opertorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361 11.5. Bart fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36611.4.1. Tbbrtelmsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 363

11.6. Nagy objektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 11.7. Alapvet opertorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

11.5.1. A bart fggvnyek elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367 11.5.2. Bartok s tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369

11.8. Indexels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 11.9. Fggvnyhvs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 11.10. Indirekci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 11.11. Nvels s cskkents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382 11.12. Egy karakterlnc osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384 11.13. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 390 11.14. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

11.7.1. Explicit konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 374

12. fejezet12.2.1. 12.2.2. 12.2.3. 12.2.4. 12.2.5. 12.2.6.

Szrmaztatott osztlyokTagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 Konstruktorok s destruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 402 Msols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Osztlyhierarchik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Tpusmezk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Virtulis fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

12.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 12.2. Szrmaztatott osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397

12.3. Absztrakt osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 12.4. Osztlyhierarchik tervezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413

12.4.1. Hagyomnyos osztlyhierarchia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 12.4.1.1. Brlat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

xvi

12.5. Osztlyhierarchik s absztrakt osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 12.6. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 12.7. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427

12.4.2. Absztrakt osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 12.4.3. Egyb megvalstsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421 12.4.3.1. Brlat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 12.4.4. Az objektumok ltrehozsnak adott helyre korltozsa . . . . . . . . . . . . . 424

13. fejezet13.2.1. 13.2.2. 13.2.3. 13.2.4. 13.2.5.

SablonokSablonok meghatrozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Sablonok pldnyostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Sablon paramterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 437 Tpusok egyenrtksge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Tpusellenrzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439

13.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 13.2. Egy egyszer karakterlnc sablon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433

13.3. Fggvnysablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

13.4. Eljrsmd megadsa sablonparamterekkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446 13.5. Specializci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449

13.3.1. A fggvnysablonok paramterei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 13.3.2. Fggvnysablonok tlterhelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 13.4.1. Alaprtelmezett sablonparamterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447 13.5.1. Specializcik sorrendje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 452 13.5.2. Fggvnysablon specializci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453 13.6.1. Paramterezs s rklds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 13.6.2. Tag sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457 13.6.3. rkldsi viszonyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 459 13.6.3.1. Sablonok konverzija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 460

13.6. rklds s sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

13.7. A forrskd szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461 13.8. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463 13.9. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465

14. fejezet

Kivtelkezels

14.1. Hibakezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

14.2. A kivtelek csoportostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471 14.3. A kivtelek elkapsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475

14.1.1. A kivtelek ms megkzeltsei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470 14.2.1. Szrmaztatott kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 14.2.2. sszetett kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 474 14.3.1. A kivtelek tovbbdobsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 14.3.2. Minden kivtel elkapsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477 14.3.2.1. A kezelk sorrendje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478 14.4.1. Konstruktorok s destruktorok hasznlata . . . . . . . . . . . . . . . . . . . . . . . 481 14.4.2. Auto_ptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483

14.4. Erforrsok kezelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 479

xvii

14.5. Kivtelek, amelyek nem hibk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 14.6. Kivtelek specifikcija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

14.4.3. Figyelmeztets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 14.4.4. A kivtelek s a new opertor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 14.4.5. Az erforrsok kimerlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 14.4.6. Kivtelek konstruktorokban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 14.4.6.1. Kivtelek s a tagok kezdeti rtkadsa . . . . . . . . . . . . . . . . . . . . . . . . . 490 14.4.6.2. Kivtelek s msols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491 14.4.7. Kivtelek destruktorokban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

14.7. El nem kapott kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 14.8. A kivtelek s a hatkonysg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501 14.9. A hibakezels egyb mdjai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 14.10. Szabvnyos kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505 14.11. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 14.12. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 509

14.6.1. A kivtelek ellenrzse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 14.6.2. Vratlan kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 14.6.3. Kivtelek lekpezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 14.6.3.1. Kivtelek felhasznli lekpezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 497 14.6.3.2. Kivtelek tpusnak visszalltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499

15. fejezet

Osztlyhierarchik

15.1. Bevezets s ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511 15.2. Tbbszrs rklds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 512

15.2.1. A tbbrtelmsg feloldsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 15.2.2. rklds s using deklarcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 15.2.3. Ismtld bzisosztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 517 15.2.3.1. Fellrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 518 15.2.4. Virtulis bzisosztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520 15.2.4.1. Virtulis bzisosztlyok programozsa . . . . . . . . . . . . . . . . . . . . . . . . . . 521 15.2.5. A tbbszrs rklds hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523 15.2.5.1. A virtulis bzisosztlyok fggvnyeinek fellrsa . . . . . . . . . . . . . . . . 526 15.3.1. Vdett tagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530 15.3.1.1. A vdett tagok hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531 15.3.2. Bzisosztlyok elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532 15.3.2.1. A tbbszrs rklds s az elrhetsg . . . . . . . . . . . . . . . . . . . . . . . 533 15.3.2.2. A using deklarcik s az elrhetsg . . . . . . . . . . . . . . . . . . . . . . . . . . 534

15.3. Hozzfrs-szablyozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528

15.4. Futsi idej tpusinformci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535

15.4.1. Dynamic_cast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536 15.4.1.1. Referencik dinamikus tpusknyszertse . . . . . . . . . . . . . . . . . . . . . . . 539 15.4.2. Osztlyhierarchik bejrsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 540 15.4.2.1. Statikus s dinamikus konverzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 542 15.4.3. Osztlyobjektumok felptse s megsemmistse . . . . . . . . . . . . . . . . 543

xviii

15.4.4. Typeid s kiterjesztett tpusinformci . . . . . . . . . . . . . . . . . . . . . . . . . . 544 15.4.4.1. Kiterjesztett tpusinformci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 15.4.5. Az RTTI helyes s helytelen hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . 547

15.5. Tagra hivatkoz mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 549

15.5.1. Bzis- s szrmaztatott osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552 15.6.1. Memriafoglals tmbk szmra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556 15.6.2. Virtulis konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 556

15.6. A szabad tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553

15.7. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 15.8. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 559

II. ktet

A kiadvny a kvetkez angol eredeti alapjn kszlt: Bjarne Stroustrup: The C++ Programming Language Special Edition Copyright 2000 by AT&T. All rights reserved. No part of this book, including interior desing, cover design, and icons, may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording, or otherwise) without the prior written permission of the publisher. Trademarked names appear throughout this book. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, the publisher states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing upon that trademark. A szerz s a kiad a lehet legnagyobb krltekintssel jrt el e kiadvny elksztsekor. Sem a szerz, sem a kiad nem vllal semminem felelssget vagy garancit a knyv tartalmval, teljessgvel kapcsolatban. Sem a szerz, sem a kiad nem vonhat felelssgre brmilyen baleset vagy kresemny miatt, mely kzvetve vagy kzvetlenl kapcsolatba hozhat e kiadvnnyal. Fordts s magyar vltozat 2001 Szy Gyrgy, Kiskapu Kft. Minden jog fenntartva! Translation and Hungarian edition 2001 Gyrgy Szy, Kiskapu Kft. All rights reserved!Sorozatszerkeszt: Szy Gyrgy Mszaki szerkeszt: Csutak Hoffmann Levente Szakmai lektor: Porkolb Zoltn Lektor: Rzmves Lszl Fordtk: Balzs Ivn Jzsef, Bein Kornl, Ludnyi Levente, Marcinkovics Tams

Felels kiad a Kiskapu Kft. gyvezet igazgatja 2001 Kiskapu Kft. 1081 Budapest Npsznhz u. 31. Tel: (+36-1) 303-9119, (+36-1) 477-0443 Fax: (+36-1) 303-1619 http://www.kiskapu.hu/ e-mail: [email protected] Msodik ktet ISBN: 963 9301 19 1 sszest ISBN: 963 9301 17 5 Kszlt a debreceni Kinizsi nyomdban Felels vezet: Brds Jnos

A knyv az Oktatsi Minisztrium tmogatsval, a Felsoktatsi Plyzatok Irodja ltal lebonyoltott felsoktatsi tanknyvtmogatsi program keretben jelent meg.

TartalomjegyzkHarmadik rsz A standard knyvtr

16. fejezet A knyvtr szerkezete s a trolk 16.1. A standard knyvtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563

16.2. A trolk szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572

16.1.1. Tervezsi korltozsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 16.1.2. A standard knyvtr szerkezete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566 16.1.3. Nyelvi elemek tmogatsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 16.2.1. Egyedi cl trolk s bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572 16.2.2. Trolk kzs ssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 576 16.2.3. A standard knyvtr troli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 16.3.1. Tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583 16.3.2. Bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585 16.3.3. Az elemek elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 16.3.4. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 16.3.5. Veremmveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593 16.3.6. Listamveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 595 16.3.7. Az elemek kivlasztsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 599 16.3.8. Mret s kapacits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 16.3.9. Tovbbi tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 16.3.10. Segdfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 603 16.3.11. Vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 604

16.3. A vektor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583

16.4. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 605 16.5. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 606 17. fejezet Szabvnyos trolk 17.1. A szabvnyos trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 609

17.1.1. Mveletek ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 610 17.1.2. Trolk ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 615 17.1.3. brzols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 616 17.1.4. Megktsek az elemekre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618 17.1.4.1. sszehasonltsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619 17.1.4.2. Tovbbi relcis mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 621

viii

17.2. Sorozatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622

17.3. Sorozat-talaktk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629

17.2.1. A vector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622 17.2.2. A list . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 17.2.2.1. thelyezs, rendezs, sszefsls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 623 17.2.2.2. Mveletek a lista elejn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 17.2.2.3. Tovbbi mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626 17.2.3. A deque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 629 17.3.1. A stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 630 17.3.2. A queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632 17.3.3. A priority_queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 17.4.1. A map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 17.4.1.1. Tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637 17.4.1.2. Bejrk s prok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 638 17.4.1.3. Indexels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 640 17.4.1.4. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 17.4.1.5. sszehasonltsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642 17.4.1.6. Mveletek asszociatv tmbkkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644 17.4.1.7. Listamveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646 17.4.1.8. Tovbbi mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 648 17.4.2. A multimap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649 17.4.3. A set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 650 17.4.4. A multiset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651 17.5.1. Karakterlncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 17.5.2. A valarray . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 17.5.3. Bithalmazok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652 17.5.3.1. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654 17.5.3.2. Bitkezel mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655 17.5.3.3. Tovbbi mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 656 17.5.4. Beptett tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657 17.6.1. A hash_map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659 17.6.2. brzols s ltrehozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 661 17.6.2.1. Keressek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 663 17.6.2.2. Trls s tmretezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 665 17.6.2.3. Hasts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666 17.6.3. Tovbbi hastott asszociatv trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668

17.4. Asszociatv trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 636

17.5. Majdnem-trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652

17.6. j trolk ltrehozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 659

17.7. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 668 17.8. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669 18. fejezet Algoritmusok s fggvnyobjektumok 18.1. Bevezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 18.2. A standard knyvtr algoritmusainak ttekintse . . . . . . . . . . . . . . . . . . . . . . . . . . 674 18.3. Sorozatok s trolk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681 18.4. Fggvnyobjektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684

18.3.1. Bemeneti sorozatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682

ix

18.5. Nem mdost algoritmusok sorozatokon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69718.5.1. 18.5.2. 18.5.3. 18.5.4. 18.5.5. A for_each . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 697 A find fggvnycsald . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699 A count() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700 Egyenlsg s eltrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 701 Keress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 703

18.4.1. Fggvnyobjektumok bzisosztlyai . . . . . . . . . . . . . . . . . . . . . . . . . . . . 685 18.4.2. Prediktumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 686 18.4.2.1. A prediktumok ttekintse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687 18.4.3. Aritmetikai fggvnyobjektumok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 688 18.4.4. Lektk, talaktk s tagadk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 689 18.4.4.1. Lektk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 691 18.4.4.2. Tagfggvny-talaktk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 693 18.4.4.3. Fggvnyre hivatkoz mutatk talakti . . . . . . . . . . . . . . . . . . . . . . . . 694 18.4.4.4. Tagadk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 695

18.6. Mdost algoritmusok sorozatokra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704

18.7. Rendezett sorozatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71718.7.1. 18.7.2. 18.7.3. 18.7.4. 18.7.5.

18.6.1. Msols . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705 18.6.2. Transzformcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707 18.6.3. Ismtld elemek trlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 709 18.6.3.1. Rendezsi szempont . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711 18.6.4. Helyettests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712 18.6.5. Trls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 18.6.6. Feltlts s ltrehozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714 18.6.7. Megfordts s elforgats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715 18.6.8. Elemek felcserlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 717 Rendezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718 Binris keress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 719 sszefsls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Feloszts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721 Halmazmveletek sorozatokon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722

18.8. A kupac . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724 18.9. Minimum s maximum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725 18.10. Permutcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 726 18.11. C stlus algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 727 18.12. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 728 18.13. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729 19. fejezet Bejrk s memriafoglalk 19.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734 19.2. Bejrk s sorozatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734

19.2.1. A bejrk mveletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735 19.2.2. A bejr jellemzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737 19.2.3. Bejr-kategrik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739 19.2.4. Beszr bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742 19.2.5. Visszafel halad bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744 19.2.6. Adatfolyamok bejri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745 19.2.6.1. tmeneti trak adatfolyamokhoz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 748

x

19.3. Ellenrztt bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 750 19.4. Memriafoglalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75819.4.1. 19.4.2. 19.4.3. 19.4.4. 19.4.5. 19.4.6.

19.3.1. Kivtelek, trolk s algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756 A szabvnyos memriafoglal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758 Felhasznli memriafoglalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763 ltalnostott memriafoglalk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 766 Elksztetlen memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768 Dinamikus memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771 C stlus helyfoglals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772

19.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773 19.6. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774 20. fejezet Karakterlncok 20.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775 20.2. Karakterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 20.3. A basic_string osztly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78020.2.1. Karakterjellemzk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777

20.4. A C standard knyvtra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802

20.3.1. Tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781 20.3.2. Bejrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782 20.3.3. Az elemek elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783 20.3.4. Konstruktorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784 20.3.5. Hibk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786 20.3.6. rtkads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788 20.3.7. talakts C stlus karakterlncra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789 20.3.8. sszehasonlts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791 20.3.9. Beszrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793 20.3.10. sszefzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795 20.3.11. Keress . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796 20.3.12. Csere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797 20.3.13. Rszlncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799 20.3.14. Mret s kapacits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 20.3.15. Ki- s bemeneti mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801 20.3.16. Felcserls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802 20.4.1. C stlus karakterlncok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803 20.4.2. Karakterek osztlyozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805

20.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806 20.6. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 807

21. fejezet Adatfolyamok 21.1. Bevezet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811 21.2. Kimenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814

21.3. Bemenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823

21.2.1. Kimeneti adatfolyamok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816 21.2.2. Beptett tpusok kimenete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818 21.2.3. Felhasznli tpusok kimenete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821 21.2.3.1. Virtulis kimeneti fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822 21.3.1. Bemeneti adatfolyamok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823 21.3.2. Beptett tpusok bemenete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824

xi

21.4. Formzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839

21.3.3. 21.3.4. 21.3.5. 21.3.6. 21.3.7. 21.3.8.

Az adatfolyam llapota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827 Karakterek beolvassa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829 Felhasznli tpusok beolvassa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833 Kivtelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834 Adatfolyamok sszektse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836 rszemek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838

21.5. Fjl- s karakterlnc-folyamok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 855

21.4.1. Formzsi llapot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 840 21.4.1.1. Formzsi llapot lemsolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842 21.4.2. Egsz kimenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 842 21.4.3. Lebegpontos szm kimenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843 21.4.4. Kimeneti mezk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845 21.4.5. Mezk igaztsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847 21.4.6. Mdostk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848 21.4.6.1. Mdostk, melyek paramtereket vrnak . . . . . . . . . . . . . . . . . . . . . . . 850 21.4.6.2. Szabvnyos ki- s bemeneti mdostk . . . . . . . . . . . . . . . . . . . . . . . . . 851 21.4.6.3. Felhasznli mdostk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853 21.5.1. Fjlfolyamok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 856 21.5.2. Adatfolyamok lezrsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859 21.5.3. Karakterlnc-folyamok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860 21.6.1. 21.6.2. 21.6.3. 21.6.4.

21.6. Ki- s bemeneti tmeneti trak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862

21.7. Helyi sajtossgok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873

Kimeneti adatfolyamok s tmeneti trolk . . . . . . . . . . . . . . . . . . . . . . 863 Bemeneti adatfolyamok s tmeneti trolk . . . . . . . . . . . . . . . . . . . . . 865 Az adatfolyamok s az tmeneti trak kapcsolata . . . . . . . . . . . . . . . . . . 866 Adatfolyamok tmeneti trolsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867

21.8. C stlus ki- s bemenet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876 21.9. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880 21.10. Feladatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881 22. fejezet Szmok 22.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886 22.2. A szmtpusok korltozsai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 886 22.3. Szabvnyos matematikai fggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890 22.4. Vektormveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89222.2.1. Korltozsi makrk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890

21.7.1. Adatfolyam-visszahvsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 875

22.5. Komplex aritmetika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915

22.4.1. Valarray ltrehozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 893 22.4.2. A valarray indexelse s az rtkads . . . . . . . . . . . . . . . . . . . . . . . . . . 894 22.4.3. Mveletek tagfggvnyknt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896 22.4.4. Nem tagfggvnyknt megvalstott mveletek . . . . . . . . . . . . . . . . . . . 900 22.4.5. Szeletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 901 22.4.6. A slice_array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904 22.4.7. Ideiglenes vltozk, msols, ciklusok . . . . . . . . . . . . . . . . . . . . . . . . . . 909 22.4.8. ltalnostott szeletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 912 22.4.9. Maszkok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914 22.4.10. Indirekt tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915

xii

22.6. ltalnostott numerikus algoritmusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 918

22.7. Vletlenszmok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923 22.8. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925 22.9. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 926

22.6.1. Az accumulate() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 919 22.6.2. Az inner_product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920 22.6.3. Nvekmnyes vltozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921

Negyedik rsz

Tervezs a C++ segtsgvel

23.fejezet Fejleszts s tervezs 23.1. ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 931 23.2. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 932 23.3. Clok s eszkzk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935 23.4. A fejlesztsi folyamat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939

23.5. Vezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96323.5.1. 23.5.2. 23.5.3. 23.5.4.

23.4.1. A fejleszts krforgsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941 23.4.2. Tervezsi clok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944 23.4.3. Tervezsi lpsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 946 23.4.3.1. Els lps: keressnk osztlyokat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 947 23.4.3.2. Msodik lps: hatrozzuk meg a mveleteket . . . . . . . . . . . . . . . . . . . 951 23.4.3.3. Harmadik lps: hatrozzuk meg az sszefggseket . . . . . . . . . . . . . . 953 23.4.3.4. Negyedik lps: hatrozzuk meg a felleteket . . . . . . . . . . . . . . . . . . . . 953 23.4.3.5. Osztlyhierarchik jraszervezse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954 23.4.3.6. Modellek hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956 23.4.4. Ksrletezs s elemzs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957 23.4.5. Tesztels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 960 23.4.6. A programok karbantartsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961 23.4.7. Hatkonysg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962 jrahasznosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963 Mret s egyensly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965 Egynek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 967 Hibrid tervezs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969

23.6. Jegyzetek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 971 23.7. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 973 24. fejezet Tervezs s programozs 24.1. ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 975 24.2. A tervezs s a programozsi nyelv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97624.2.1. 24.2.2. 24.2.3. 24.2.4. 24.2.5.

24.3. Osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988

Az osztlyok figyelmen kvl hagysa . . . . . . . . . . . . . . . . . . . . . . . . . . . 978 Az rkls elkerlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 981 A statikus tpusellenorzs figyelmen kvl hagysa . . . . . . . . . . . . . . . . . 982 A programozs elkerlse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 985 Az osztlyhierarchik kizrlagos hasznlata . . . . . . . . . . . . . . . . . . . . . 987

24.3.1. Mit brzolnak az osztlyok? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 989 24.3.2. Osztlyhierarchik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991 24.3.2.1. Osztlyhierarchin belli fggsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994 24.3.3. Tartalmazsi kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 996

xiii

24.4. Komponensek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1017

24.3.4. Tartalmazs s rkls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 998 24.3.4.1. Tag vagy hierarchia? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002 24.3.4.2. Tartalmazs vagy hierarchia? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1003 24.3.5. Hasznlati kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1005 24.3.6. Beprogramozott kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1006 24.3.7. Osztlyon belli kapcsolatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 24.3.7.1. Invarinsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1009 24.3.7.2. Felttelezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011 24.3.7.3. Elfelttelek s utfelttelek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1015 24.3.7.4. Betokozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1016 24.4.1. Sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020 24.4.2. Fellet s megvalsts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1022 24.4.3. Kvr felletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025

24.5. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1028 25. fejezet Az osztlyok szerepe 25.1. Az osztlyok fajti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031 25.2. Konkrt tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032

25.3. Absztrakt tpusok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1037 25.4. Csompont-osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041 25.5. Mveletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047 25.6. Felletosztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104925.6.1. Felletek igaztsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051

25.2.1. A konkrt tpusok jrahasznostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035

25.4.1. Felletek mdostsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1044

25.7. Ler osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054 25.8. Keretrendszerek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1059 25.9. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1061 25.10. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062

25.7.1. A lerk mveletei . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1058

Fggelkek s trgymutatA. fggelk Nyelvtan A.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067 A.2. Kulcsszavak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068 A.3. Lexikai szablyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069 A.4. Programok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1073 A.5. Kifejezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1074 A.6. Utastsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079 A.7. Deklarcik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1080 A.8. Osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1086A.7.1. Deklartorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084 A.8.1. Szrmaztatott osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1087 A.8.2. Klnleges tagfggvnyek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088 A.8.3. Tlterhels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089

A.9. Sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089

xiv

A.10. Kivtelkezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 A.11. Az elfeldolgoz direktvi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091 B. fggelk Kompatibilits B.1. Bevezets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1095 B.2. C/C++ kompatibilits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1096

B.3. Rgebbi C++-vltozatok hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1103B.3.1. B.3.2. B.3.3. B.3.4. B.3.5. B.3.6.

B.2.2. C program, ami nem C++ program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1097 B.2.3. Elavult szolgltatsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101 B.2.4. C++ program, ami nem C program . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102 Fejllomnyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104 A standard knyvtr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1106 Nvterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Helyfoglalsi hibk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 Sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1108 A for utasts kezdrtk-ad rsze . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110

B.4. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1111 B.5. Gyakorlatok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1112 C. fggelk Technikai rszletek C.1. Bevezets s ttekints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1115 C.2. A szabvny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1116 C.3. Karakterkszletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118C.3.1. C.3.2. C.3.3. C.3.4.

C.4. Az egsz literlok tpusa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1123 C.5. Konstans kifejezsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 C.6. Automatikus tpuskonverzi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124

Korltozott karakterkszletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1118 Escape karakterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1120 Nagy karakterkszletek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1121 Eljeles s eljel nlkli karakterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1122

C.7. Tbbdimenzis tmbk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 C.8. Ha kevs a memria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135 C.9. Memriakezels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139C.9.1. Automatikus szemtgyjts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1140

C.6.1. Kiterjesztsek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124 C.6.2. Konverzik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1125 C.6.3. Szoksos aritmetikai konverzik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129 C.7.1. Vektorok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1130 C.7.3. Tbbdimenzis tmbk tadsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1133 C.8.1. Mezk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1135 C.8.2. Unik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136

C.10. Nvterek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144

C.11. Hozzfrs-szablyozs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147

C.10.1. Knyelem s biztonsg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1144 C.10.2. Nvterek egymsba gyazsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1146 C.10.3. Nvterek s osztlyok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 C.11.1. Tagok elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1147 C.11.2. Bzisosztlyok elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1148 C.11.3. Tagosztlyok elrse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150

xv

C.12. Adattagokra hivatkoz mutatk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152 C.13. Sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153

C.11.4. Bartok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1151

C.14. Tancsok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1171 D. fggelk Helyi sajtossgok D.1. A kulturlis eltrsek kezelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1173 D.2. A locale osztly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178D.2.1. D.2.2. D.2.3. D.2.4.

C.13.1. Statikus tagok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1153 C.13.2. Bartok s sablonok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154 C.13.3. Sablonok, mint sablonparamterek . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155 C.13.4. Sablon fggvnyek paramtereinek levezetse . . . . . . . . . . . . . . . . . . 1156 C.13.5. A typename s a template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1157 C.13.6. Sablonok, mint minstk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159 C.13.7. Pldnyosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159 C.13.8. Nvkts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1160 C.13.9. Mikor van szksg specializcira? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169 C.13.10. Explicit pldnyosts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1170

D.1.1. A kulturlis eltrsek programozsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1174 Nevestett loklok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181 Loklok msolsa s sszehasonltsa . . . . . . . . . . . . . . . . . . . . . . . . . 1185 A global() s classic() loklok . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1187 Karakterlncok sszehasonltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188

D.3. Jellemzk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1189

D.4. Szabvnyos facet-ek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1197D.4.1. D.4.2. D.4.3. D.4.4. D.4.5. D.4.6. D.4.7.

D.3.1. Jellemzk elrse a loklokban . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1191 D.3.2. Egyszer felhasznli facet-ek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1192 D.3.3. A loklok s jellemzk hasznlata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1196 Karakterlncok sszehasonltsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1200 Szmok be- s kivitele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1205 Pnzrtkek be- s kivitele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1212 Dtum s id beolvassa s kirsa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 Karakterek osztlyozsa . . . . . . . . . . . . . . . .