Poznaj język C++ w 21 dni!
Jak nauczyć się języka C++ w 3 tygodnie?
Jak działają wskaźniki?
Jak wykorzystać polimorfizm w programowaniu obiektowym?
Pomimo swojego wieku, język C++ wciąż utrzymuje wysoką formę. Przez lata zdobył i ugruntował sobie świetną pozycję na rynku języków programowania. Dzięki temu, nawet dziś w czasach gdzie króluje język Java oraz platforma .NET, wciąż swoich zwolenników. Ba! Istnieją takie gałęzie oprogramowania, w których jest on niezastąpiony. Dlatego jeżeli oczekujesz najwyższej wydajności, operowania blisko sprzętu oraz pełnej kontroli nad sposobem wykonywania programu powinieneś postawić właśnie na C++.
Dzięki książce, którą trzymasz w ręku będzie to stosunkowo proste zadanie. Poświęcając tylko godzinę dziennie zdobędziesz wiedzę, która pozwoli Ci spokojnie rozpocząć przygodę z językiem C++, poznać jego tajniki, zalety oraz wady. Z każdą kolejną godziną będziesz zdobywać coraz to bardziej zaawansowaną i ciekawą wiedzę. Jaki więc zakres obejmuje niniejszy podręcznik? Kompletny, którego opanowanie pozwoli Ci na pisanie programów o różnym stopniu złożoności oraz swobodne poruszanie się w świecie języka C++. Zdobędziesz informacje na temat stałych, zmiennych, tablic, instrukcji warunkowych oraz pętli. Ponadto dowiesz się, jak wykorzystać wskaźniki oraz dyrektywy kompilatora. Natomiast lektura ostatnich rozdziałów książki pozwoli Ci na swobodne poruszanie się w świecie programowania obiektowego, strumieni oraz klas STL. Obiekty, klasy, dziedziczenie czy polimorfizm - te pojęcia nie skryją przed Tobą już żadnej tajemnicy! Kolejne wydanie cenionej książki sprawdzi się w rękach każdego adepta języka C++. Jeżeli chcesz poznać ten język, to nie ma na co czekać. Lepszej okazji nie będzie!
Historia języka C++
Konstrukcja programu w języku C++
Komentowanie kodu
Zmienne i stałe
Zastosowanie tablic i ciągów tekstowych
Formułowanie wyrażeń
Instrukcje warunkowe i operatory
Wykorzystanie i tworzenie funkcji
Zakresy zmiennych
Sterowanie przebiegiem programu
Zasada działania wskaźników
Programowanie obiektowe - klasy, obiekty, dziedziczenie, polimorfizm
Rzutowanie
Wykorzystanie strumieni
Kompilowanie warunkowe, instrukcje kompilatora
Sprawdź czy język C++ spełni Twoje oczekiwania!
Znajdź podobne książki
Ostatnio czytane w tej kategorii
Darmowy fragment publikacji:
Idź do
• Spis treści
• Przykładowy rozdział
Katalog książek
• Katalog online
• Zamów drukowany
katalog
Twój koszyk
• Dodaj do koszyka
Cennik i informacje
• Zamów informacje
o nowościach
• Zamów cennik
Czytelnia
• Fragmenty książek
online
Kontakt
Helion SA
ul. Kościuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
© Helion 1991–2010
C++ dla każdego.
Wydanie II
Autorzy: Jesse Liberty, Siddhartha Rao, Bradley L. Jones
Tłumaczenie: Robert Górczyński
ISBN: 978-83-246-2782-0
Tytuł oryginału: Sams Teach Yourself C++
in One Hour a Day (6th Edition)
Format: B5, stron: 850
Poznaj język C++ w 21 dni!
Pomimo swojego wieku, język C++ wciąż utrzymuje wysoką formę. Przez lata zdobył i ugruntował
sobie świetną pozycję na rynku języków programowania. Dzięki temu, nawet dziś w czasach gdzie
króluje język Java oraz platforma .NET, wciąż swoich zwolenników. Ba! Istnieją takie gałęzie
oprogramowania, w których jest on niezastąpiony. Dlatego jeżeli oczekujesz najwyższej
wydajności, operowania blisko sprzętu oraz pełnej kontroli nad sposobem wykonywania
programu powinieneś postawić właśnie na C++.
Dzięki książce, którą trzymasz w ręku będzie to stosunkowo proste zadanie. Poświęcając tylko
godzinę dziennie zdobędziesz wiedzę, która pozwoli Ci spokojnie rozpocząć przygodę z językiem
C++, poznać jego tajniki, zalety oraz wady. Z każdą kolejną godziną będziesz zdobywać coraz to
bardziej zaawansowaną i ciekawą wiedzę. Jaki więc zakres obejmuje niniejszy podręcznik?
Kompletny, którego opanowanie pozwoli Ci na pisanie programów o różnym stopniu złożoności
oraz swobodne poruszanie się w świecie języka C++. Zdobędziesz informacje na temat stałych,
zmiennych, tablic, instrukcji warunkowych oraz pętli. Ponadto dowiesz się, jak wykorzystać
wskaźniki oraz dyrektywy kompilatora. Natomiast lektura ostatnich rozdziałów książki pozwoli Ci
na swobodne poruszanie się w świecie programowania obiektowego, strumieni oraz klas STL.
Obiekty, klasy, dziedziczenie czy polimorfizm – te pojęcia nie skryją przed Tobą już żadnej
tajemnicy! Kolejne wydanie cenionej książki sprawdzi się w rękach każdego adepta języka C++.
Jeżeli chcesz poznać ten język, to nie ma na co czekać. Lepszej okazji nie będzie!
• Historia języka C++
• Konstrukcja programu w języku C++
• Komentowanie kodu
• Zmienne i stałe
• Zastosowanie tablic i ciągów tekstowych
• Formułowanie wyrażeń
• Instrukcje warunkowe i operatory
• Wykorzystanie i tworzenie funkcji
• Zakresy zmiennych
• Sterowanie przebiegiem programu
• Zasada działania wskaźników
• Programowanie obiektowe – klasy, obiekty, dziedziczenie, polimorfizm
• Rzutowanie
• Wykorzystanie strumieni
• Kompilowanie warunkowe, instrukcje kompilatora
Sprawdź czy język C++ spełni Twoje oczekiwania!
Spis treĂci
WstÚp
25
CzÚĂÊ I Podstawy
Lekcja 1. Zaczynamy
31
Krótka historia j¸zyka C++ ............................................................................................31
Interpretery i kompilatory ....................................................................................33
Zmiana wymagaÑ, zmiana platform ..................................................................34
Programowanie proceduralne, strukturalne i obiektowe .......................35
Programowanie zorientowane obiektowo .....................................................36
C++ i programowanie zorientowane obiektowo .............................................37
Jak ewoluowaÏo C++ ........................................................................................................38
Czy naleĂy najpierw pozna© C? ...................................................................................39
Dodatek Microsoft Managed Extensions for C++ ................................................39
Standard ANSI ....................................................................................................................39
Przygotowanie do programowania ..........................................................................40
Twoje ärodowisko programowania ..........................................................................41
Tworzenie programu ......................................................................................................42
Tworzenie pliku obiektowego za pomoc¦ kompilatora ...........................42
Tworzenie pliku wykonywalnego za pomoc¦ linkera ...............................43
Cykl tworzenia programu .............................................................................................43
HELLO.cpp — Twój pierwszy program w C++ ....................................................45
Zaczynamy prac¸ z kompilatorem ............................................................................47
Budowanie projektu Hello World .......................................................................48
Bϸdy kompilacji ................................................................................................................49
Podsumowanie ...................................................................................................................50
Pytania i odpowiedzi .......................................................................................................50
Warsztaty .............................................................................................................................51
Quiz ..................................................................................................................................52
*wiczenia .......................................................................................................................52
4
C++ dla kaĝdego
Lekcja 2. Anatomia programu C++
Lekcja 3. Zmienne i staïe
53
Prosty program ................................................................................................................. 53
Rzut oka na obiekt cout ................................................................................................. 56
UĂywanie przestrzeni nazw standardowych ....................................................... 58
Komentarze ......................................................................................................................... 61
Rodzaje komentarzy ................................................................................................. 61
UĂywanie komentarzy ............................................................................................. 62
Jeszcze jedna uwaga na temat komentarzy ................................................... 63
Funkcje .................................................................................................................................. 63
Korzystanie z funkcji ................................................................................................ 65
Metody kontra funkcje ............................................................................................ 67
Podsumowanie .................................................................................................................. 67
Pytania i odpowiedzi ....................................................................................................... 67
Warsztaty ............................................................................................................................. 68
Quiz .................................................................................................................................. 68
*wiczenia ...................................................................................................................... 69
71
Czym jest zmienna? ......................................................................................................... 71
Dane s¦ przechowywane w pami¸ci ................................................................. 71
Przydzielanie pami¸ci ............................................................................................. 72
Rozmiar liczb caÏkowitych .................................................................................... 73
Zapis ze znakiem i bez znaku ............................................................................... 74
Podstawowe typy zmiennych .............................................................................. 74
Definiowanie zmiennej .................................................................................................. 75
Uwzgl¸dnianie wielkoäci liter .............................................................................. 77
Konwencje nazywania zmiennych ..................................................................... 77
SÏowa kluczowe .......................................................................................................... 78
Okreälenie iloäci pami¸ci uĂywanej przez typ zmiennej ................................ 79
Tworzenie kilku zmiennych jednoczeänie ............................................................ 81
Przypisywanie zmiennym wartoäci ......................................................................... 81
Tworzenie aliasów za pomoc¦ typedef ................................................................... 83
Kiedy uĂywa© typu short, a kiedy typu long? ....................................................... 84
Zawini¸cie liczby caÏkowitej bez znaku ........................................................... 85
Zawini¸cie liczby caÏkowitej ze znakiem ........................................................ 86
Spis treĂci
5
Lekcja 4. Tablice i ciÈgi tekstowe
Znaki .......................................................................................................................................87
Znaki i liczby ................................................................................................................88
Znaki specjalne ............................................................................................................89
StaÏe ........................................................................................................................................90
LiteraÏy ...........................................................................................................................90
StaÏe symboliczne ......................................................................................................91
StaÏe wyliczeniowe ...........................................................................................................92
Podsumowanie ...................................................................................................................95
Pytania i odpowiedzi .......................................................................................................96
Warsztaty .............................................................................................................................97
Quiz ..................................................................................................................................97
*wiczenia .......................................................................................................................98
99
Czym jest tablica? ..............................................................................................................99
Elementy tablicy ...................................................................................................... 100
Zapisywanie za koÑcem tablicy ........................................................................ 102
BϦd sÏupka w pÏocie ............................................................................................. 104
Inicjalizowanie tablic ............................................................................................ 105
Deklarowanie tablic ............................................................................................... 106
Tablice wielowymiarowe ........................................................................................... 107
Deklarowanie tablic wielowymiarowych ..................................................... 108
Inicjalizowanie tablic wielowymiarowych .................................................. 110
Tablice znaków i ci¦gi tekstowe .............................................................................. 113
Metody strcpy() oraz strncpy() ............................................................................... 115
Klasy ci¦gów tekstowych ........................................................................................... 117
Podsumowanie ................................................................................................................ 120
Pytania i odpowiedzi .................................................................................................... 120
Warsztaty .......................................................................................................................... 121
Quiz ............................................................................................................................... 121
*wiczenia .................................................................................................................... 122
123
Instrukcje ........................................................................................................................... 123
BiaÏe znaki .................................................................................................................. 124
Bloki i instrukcje zÏoĂone .................................................................................... 124
WyraĂenia ......................................................................................................................... 125
Lekcja 5. Wyraĝenia, instrukcje i operatory
6
C++ dla kaĝdego
Operatory ...........................................................................................................................126
Operator przypisania .............................................................................................127
Operatory matematyczne ....................................................................................127
O¦czenie operatora przypisania z operatorem matematycznym .............130
Inkrementacja i dekrementacja ...............................................................................130
Przedrostki i przyrostki ........................................................................................131
Kolejnoä© dziaÏaÑ ............................................................................................................133
ZagnieĂdĂanie nawiasów ............................................................................................134
Prawda i faÏsz ...................................................................................................................135
Operatory relacji ......................................................................................................136
Instrukcja if .......................................................................................................................137
Styl wci¸© .....................................................................................................................141
Instrukcja else ...........................................................................................................141
Zaawansowane instrukcje if ...............................................................................143
UĂycie nawiasów klamrowych w zagnieĂdĂonych instrukcjach if ...........146
Operatory logiczne .........................................................................................................149
Logiczne I ....................................................................................................................149
Logiczne LUB .............................................................................................................150
Logiczne NIE ..............................................................................................................150
Skrócone obliczanie wyraĂeÑ logicznych ............................................................150
Kolejnoä© operatorów logicznych ...........................................................................151
Kilka sÏów na temat prawdy i faÏszu ......................................................................152
Operator warunkowy (trójelementowy) .............................................................152
Podsumowanie ................................................................................................................154
Pytania i odpowiedzi .....................................................................................................154
Warsztaty ...........................................................................................................................155
Quiz ................................................................................................................................155
*wiczenia ....................................................................................................................156
159
Czym jest funkcja? ..........................................................................................................159
Zwracane wartoäci, parametry i argumenty ......................................................160
Deklarowanie i definiowanie funkcji .....................................................................161
Prototypy funkcji .....................................................................................................162
Definiowanie funkcji ..............................................................................................164
Wykonywanie funkcji ...................................................................................................166
Lekcja 6. Funkcje
Spis treĂci
7
Zakres zmiennej ............................................................................................................. 166
Zmienne lokalne ...................................................................................................... 166
Zmienne lokalne zdefiniowane w blokach .................................................. 168
Parametry s¦ zmiennymi lokalnymi ...................................................................... 170
Zmienne globalne .................................................................................................... 172
Zmienne globalne: ostrzeĂenie ......................................................................... 173
RozwaĂania na temat tworzenia instrukcji funkcji ........................................ 174
Kilka sÏów na temat argumentów funkcji ........................................................... 174
Kilka sÏów na temat zwracanych wartoäci ......................................................... 175
Parametry domyälne .................................................................................................... 178
Przeci¦Ăanie funkcji ...................................................................................................... 181
Zagadnienia zwi¦zane z funkcjami ......................................................................... 185
Funkcje typu inline ................................................................................................. 185
Rekurencja ................................................................................................................. 188
Jak dziaÏaj¦ funkcje — rzut oka „pod mask¸” .................................................... 193
Poziomy abstrakcji ................................................................................................. 193
Podsumowanie ................................................................................................................ 198
Pytania i odpowiedzi .................................................................................................... 199
Warsztaty .......................................................................................................................... 200
Quiz ............................................................................................................................... 200
*wiczenia .................................................................................................................... 200
203
P¸tle ..................................................................................................................................... 203
Pocz¦tki p¸tli: instrukcja goto ........................................................................... 203
Dlaczego nie jest zalecane stosowanie instrukcji goto? ......................... 205
P¸tle while ......................................................................................................................... 205
Bardziej skomplikowane instrukcje while .................................................. 207
Instrukcje continue oraz break ......................................................................... 209
P¸tla while (true) .................................................................................................... 212
Implementacja p¸tli do...while ................................................................................. 213
UĂywanie p¸tli do...while ............................................................................................ 214
P¸tle for .............................................................................................................................. 216
Zaawansowane p¸tle for ...................................................................................... 219
Puste p¸tle for .......................................................................................................... 222
P¸tle zagnieĂdĂone ................................................................................................. 223
Zakres zmiennych w p¸tlach for ...................................................................... 225
Lekcja 7. Sterowanie przebiegiem dziaïania programu
8
C++ dla kaĝdego
Lekcja 8. Wskaěniki
Podsumowanie p¸tli ......................................................................................................226
Sterowanie przebiegiem dziaÏania programu
za pomoc¦ instrukcji switch ...................................................................................229
UĂycie instrukcji switch w menu ......................................................................232
Podsumowanie ................................................................................................................236
Pytania i odpowiedzi .....................................................................................................236
Warsztaty ...........................................................................................................................237
Quiz ................................................................................................................................238
*wiczenia ....................................................................................................................238
241
Czym jest wskaĀnik? .....................................................................................................241
Kilka sÏów na temat pami¸ci ...............................................................................241
UĂycie operatora adresu zmiennej w pami¸ci ( ) ...................................242
Przechowywanie adresu zmiennej we wskaĀniku ...................................244
Nazwy wskaĀników ................................................................................................244
Pobranie wartoäci ze zmiennej .........................................................................245
Dereferencja za pomoc¦ operatora wyÏuskania ........................................246
WskaĀniki, adresy i zmienne ..............................................................................247
Operowanie danymi poprzez wskaĀniki .......................................................248
Sprawdzanie adresu ...............................................................................................250
Nazwy wskaĀników i tablic .................................................................................252
WskaĀnik do tablicy kontra tablica wskaĀników ......................................254
Do czego sÏuæ wskaĀniki? .........................................................................................255
Stos i sterta ........................................................................................................................255
Alokacja pami¸ci za pomoc¦ sÏowa kluczowego new .............................257
Zwalnianie pami¸ci: sÏowo kluczowe delete ...............................................258
Inne spojrzenie na wycieki pami¸ci .......................................................................260
Tworzenie obiektów na stercie ................................................................................261
Usuwanie obiektów ze sterty ....................................................................................261
Utracone wskaĀniki .......................................................................................................263
WskaĀniki const ..............................................................................................................267
Podsumowanie ................................................................................................................268
Pytania i odpowiedzi .....................................................................................................268
Warsztaty ...........................................................................................................................269
Quiz ................................................................................................................................269
*wiczenia ....................................................................................................................269
Spis treĂci
9
Lekcja 9. Referencje
271
Czym jest referencja? ................................................................................................... 271
UĂycie operatora adresu ( ) z referencj¦ ........................................................... 273
Nie moĂna zmienia© przypisania referencji ................................................ 275
Zerowe wskaĀniki i zerowe referencje ................................................................. 276
Przekazywanie argumentów funkcji przez referencj¸ .................................. 277
Tworzenie funkcji swap() otrzymuj¦cej wskaĀniki ................................. 279
Implementacja funkcji swap() za pomoc¦ referencji .............................. 281
Zwracanie kilku wartoäci ........................................................................................... 283
Zwracanie wartoäci przez referencj¸ ............................................................. 285
Przekazywanie przez referencj¸ zwi¸ksza efektywnoä©
dziaÏania programu .................................................................................................... 286
Przekazywanie wskaĀnika const ...................................................................... 290
Referencje jako metoda alternatywna ........................................................... 293
Kiedy uĂywa© wskaĀników, a kiedy referencji ................................................. 295
O¦czenie referencji i wskaĀników ........................................................................... 296
Zwracanie referencji do obiektu, którego nie ma w zakresie .................... 298
Problem zwi¦zany ze zwracaniem referencji do obiektu na stercie ........ 299
Podsumowanie ................................................................................................................ 301
Pytania i odpowiedzi .................................................................................................... 301
Warsztaty .......................................................................................................................... 302
Quiz ............................................................................................................................... 302
*wiczenia .................................................................................................................... 302
CzÚĂÊ II Podstawy programowania
zorientowanego obiektowo i C++
Lekcja 10. Klasy i obiekty
307
Czy C++ jest zorientowane obiektowo? ............................................................... 307
Tworzenie nowych typów .......................................................................................... 309
Wprowadzenie klas i elementów skÏadowych ................................................. 310
Deklarowanie klasy ................................................................................................ 311
Kilka sÏów o konwencji nazw ............................................................................ 311
Definiowanie obiektu ............................................................................................ 313
Klasy a obiekty ......................................................................................................... 313
Dost¸p do elementów skÏadowych klasy ............................................................ 313
Przypisywa© naleĂy obiektom, nie klasom .................................................. 314
Czego nie zadeklarujesz, tego klasa nie b¸dzie miaÏa ............................. 314
10
C++ dla kaĝdego
Lekcja 11. Dziedziczenie
Dost¸p prywatny i publiczny ....................................................................................315
Oznaczanie danych skÏadowych jako prywatnych ...................................317
Implementowanie metod klasy ................................................................................321
Konstruktory i destruktory ........................................................................................324
Domyälne konstruktory i destruktory ...........................................................325
UĂycie domyälnego konstruktora ....................................................................326
Funkcje skÏadowe const ..............................................................................................329
Gdzie umieszcza© deklaracje klasy i definicje metod .....................................331
Implementacja inline ....................................................................................................332
Klasy, których danymi skÏadowymi s¦ inne klasy ...........................................335
Struktury ............................................................................................................................340
Podsumowanie ................................................................................................................340
Pytania i odpowiedzi .....................................................................................................341
Warsztaty ...........................................................................................................................343
Quiz ................................................................................................................................343
*wiczenia ....................................................................................................................343
345
Czym jest dziedziczenie? .............................................................................................345
Dziedziczenie i wyprowadzanie ........................................................................346
Królestwo zwierz¦t .................................................................................................347
SkÏadnia wyprowadzania .....................................................................................348
Prywatne kontra chronione .......................................................................................350
Dziedziczenie oraz konstruktory i destruktory ................................................353
Przekazywanie argumentów do konstruktorów bazowych .................355
PrzesÏanianie funkcji klasy bazowej ......................................................................360
Ukrywanie metod klasy bazowej ......................................................................363
WywoÏywanie metod klasy bazowej ..............................................................365
Metody wirtualne ...........................................................................................................367
Jak dziaÏaj¦ funkcje wirtualne ............................................................................372
Próba uzyskania dost¸pu do metod klasy bazowej ..................................373
Okrajanie .....................................................................................................................374
Tworzenie destruktorów wirtualnych ...........................................................377
Wirtualne konstruktory kopiuj¦ce ..................................................................377
Koszt metod wirtualnych .....................................................................................381
Dziedziczenie prywatne ..............................................................................................381
UĂywanie dziedziczenia prywatnego .............................................................382
Dziedziczenie prywatne kontra agregacja (zÏoĂenie) .............................384
Spis treĂci
11
Lekcja 12. Polimorfizm
Podsumowanie ................................................................................................................ 385
Pytania i odpowiedzi .................................................................................................... 386
Warsztaty .......................................................................................................................... 387
Quiz ............................................................................................................................... 387
*wiczenia .................................................................................................................... 388
389
Problemy z pojedynczym dziedziczeniem .......................................................... 389
Przenoszenie w gór¸ .............................................................................................. 392
Rzutowanie w dóÏ ................................................................................................... 393
PoϦczenie dwóch list ............................................................................................ 396
Dziedziczenie wielokrotne ......................................................................................... 397
Cz¸äci obiektu z dziedziczeniem wielokrotnym ....................................... 401
Konstruktory w obiektach dziedziczonych wielokrotnie ..................... 402
Eliminowanie niejednoznacznoäci .................................................................. 405
Dziedziczenie ze wspólnej klasy bazowej .................................................... 406
Dziedziczenie wirtualne ....................................................................................... 410
Problemy z dziedziczeniem wielokrotnym ................................................. 415
Mixiny i klasy metod .............................................................................................. 415
Abstrakcyjne typy danych .......................................................................................... 416
Czyste funkcje wirtualne ..................................................................................... 420
Implementowanie czystych funkcji wirtualnych ...................................... 422
ZÏoĂone hierarchie abstrakcji ............................................................................ 426
Które typy s¦ abstrakcyjne? ............................................................................... 430
Podsumowanie ................................................................................................................ 430
Pytania i odpowiedzi .................................................................................................... 431
Warsztaty .......................................................................................................................... 432
Quiz ............................................................................................................................... 432
*wiczenia .................................................................................................................... 433
435
Czym s¦ operatory w C++? ......................................................................................... 435
Operatory jednoargumentowe ................................................................................ 436
Typy operatorów jednoargumentowych ..................................................... 437
Programowanie jednoargumentowego operatora inkrementacji
i dekrementacji ...................................................................................................... 437
Lekcja 13. Typy operatorów i przeciÈĝanie operatorów
12
C++ dla kaĝdego
Programowanie operatora dereferencji *
i operatora wyboru elementu skÏadowego - ...............................................441
Programowanie operatorów konwersji ........................................................444
Operatory dwuargumentowe ...................................................................................446
Typy operatorów dwuargumentowych .........................................................446
Programowanie operatorów dodawania (a+b) i odejmowania (a-b) .......447
Programowanie operatorów dodawania/przypisania
i odejmowania/przypisania .............................................................................450
Przeci¦Ăanie operatorów porównywania ....................................................452
Przeci¦Ăanie operatorów , , = i = ............................................................456
Operatory indeksowania ......................................................................................459
Funkcja operator() .........................................................................................................462
Operatory, których nie moĂna ponownie zdefiniowa© ..................................463
Podsumowanie ................................................................................................................464
Pytania i odpowiedzi .....................................................................................................464
Warsztaty ...........................................................................................................................465
Quiz ................................................................................................................................465
*wiczenia ....................................................................................................................465
467
Co to jest rzutowanie? ..................................................................................................467
Kiedy zachodzi potrzeba rzutowania? ..................................................................467
Dlaczego rzutowanie w stylu C nie jest popularne
wäród niektórych programistów C++? ..............................................................468
Operatory rzutowania C++ .........................................................................................469
UĂycie static_cast .....................................................................................................470
UĂycie dynamic_cast i identyfikacja typu w czasie dziaÏania ...............471
UĂycie reinterpret_cast .........................................................................................474
UĂycie const_cast .....................................................................................................475
Problemy z operatorami rzutowania C++ ..............................................................476
Podsumowanie ................................................................................................................477
Pytania i odpowiedzi .....................................................................................................477
Warsztaty ...........................................................................................................................478
Quiz ................................................................................................................................478
481
Preprocesor i kompilator ............................................................................................481
Dyrektywa #define preprocesora ...........................................................................482
Lekcja 15. Wprowadzenie do makr i wzorców
Lekcja 14. Operatory rzutowania
Spis treĂci
13
Funkcje makro ................................................................................................................. 482
Po co te wszystkie nawiasy? .............................................................................. 484
W jaki sposób makra i sÏabe bezpieczeÑstwo typów
id¦ r¸ka w r¸k¸? .................................................................................................... 485
Makra a funkcje i wzorce ..................................................................................... 486
Funkcje inline ........................................................................................................... 486
Wprowadzenie do wzorców ..................................................................................... 488
SkÏadnia deklaracji wzorca ................................................................................. 489
RóĂne rodzaje deklaracji wzorca ..................................................................... 490
Klasy wzorca ............................................................................................................. 490
Ustanawianie i specjalizacja wzorca .............................................................. 491
Wzorce i bezpieczeÑstwo typów ...................................................................... 492
Deklarowanie wzorców z wieloma parametrami .................................... 492
Deklarowanie wzorców z parametrami domyälnymi ............................ 493
PrzykÏad wzorca ...................................................................................................... 493
UĂycie wzorców w praktycznym programowaniu C++ ......................... 495
Podsumowanie ................................................................................................................ 496
Pytania i odpowiedzi .................................................................................................... 496
Warsztaty .......................................................................................................................... 498
Quiz ............................................................................................................................... 498
*wiczenia .................................................................................................................... 498
CzÚĂÊ III Poznajemy standardowÈ bibliotekÚ
wzorców (STL)
Lekcja 16. Wprowadzenie do standardowej biblioteki wzorców
501
Kontenery STL ................................................................................................................. 501
Kontenery sekwencyjne ....................................................................................... 501
Kontenery asocjacyjne .......................................................................................... 502
Wybór odpowiedniego kontenera ................................................................... 503
Iteratory STL .................................................................................................................... 503
Algorytmy STL ................................................................................................................. 506
OddziaÏywania mi¸dzy kontenerami i algorytmami
za pomoc¦ iteratorów ............................................................................................... 507
Podsumowanie ................................................................................................................ 509
Pytania i odpowiedzi .................................................................................................... 510
Warsztaty .......................................................................................................................... 510
Quiz ............................................................................................................................... 511
14
C++ dla kaĝdego
Lekcja 17. Klasa string w STL
513
Lekcja 18. Dynamiczne klasy tablic w STL
Potrzeba powstania klasy sÏuæcej do manipulowania ci¦gami
tekstowymi .....................................................................................................................513
Praca z klas¦ STL string ...............................................................................................515
Ustanawianie obiektu STL string i tworzenie kopii .................................515
Uzyskanie dost¸pu do obiektu string i jego zawartoäci .........................518
O¦czenie ci¦gów tekstowych ..............................................................................520
Wyszukiwanie znaku b¦dĀ podci¦gu tekstowego w obiekcie string .....521
Skracanie obiektu STL string ..............................................................................523
Odwracanie zawartoäci ci¦gu tekstowego ...................................................525
Konwersja wielkoäci znaków obiektu string .................................................526
Bazuj¦ca na wzorcach implementacja klasy STL string ................................528
Podsumowanie ................................................................................................................528
Pytania i odpowiedzi .....................................................................................................529
Warsztaty ...........................................................................................................................529
Quiz ................................................................................................................................529
*wiczenia ....................................................................................................................530
531
Charakterystyka klasy std::vector ..........................................................................531
Typowe operacje klasy vector ..................................................................................532
Ustanawianie klasy vector ...................................................................................532
Wstawianie elementów do obiektu vector ..................................................533
Uzyskanie dost¸pu do elementów obiektu vector ....................................538
Usuwanie elementów z obiektu vector ..........................................................541
Zrozumienie funkcji size() i capacity() .................................................................542
Klasa STL deque ..............................................................................................................545
Podsumowanie ................................................................................................................547
Pytania i odpowiedzi .....................................................................................................547
Warsztaty ...........................................................................................................................548
Quiz ................................................................................................................................549
*wiczenia ....................................................................................................................549
551
Charakterystyka klasy std::list .................................................................................551
Podstawowe operacje klasy list ...............................................................................552
Ustanawianie obiektu std::list ...........................................................................552
Wstawianie elementów na pocz¦tku obiektu list .....................................552
Lekcja 19. Klasa STL list
Spis treĂci
15
Lekcja 20. Klasy STL set i multiset
Wstawianie elementów na koÑcu obiektu list ........................................... 554
Wstawianie elementów w ärodku obiektu list .......................................... 555
Usuwanie elementów w obiekcie list ............................................................. 558
Odwrócenie i sortowanie elementów w obiekcie list .................................... 560
Odwracanie elementów ....................................................................................... 561
Sortowanie elementów ........................................................................................ 562
Podsumowanie ................................................................................................................ 573
Pytania i odpowiedzi .................................................................................................... 573
Warsztaty .......................................................................................................................... 574
Quiz ............................................................................................................................... 574
*wiczenia .................................................................................................................... 574
575
Wprowadzenie ................................................................................................................ 575
Podstawowe operacje klas STL set i multiset ................................................... 576
Ustanawianie obiektu std::set ........................................................................... 576
Wstawianie elementów do obiektu set lub multiset ............................... 577
Wyszukiwanie elementów w obiekcie STL set lub multiset ................ 579
Usuwanie elementów z obiektu STL set lub multiset ............................. 581
Wady i zalety uĂywania obiektów STL set i multiset ..................................... 592
Podsumowanie ................................................................................................................ 592
Pytania i odpowiedzi .................................................................................................... 592
Warsztaty .......................................................................................................................... 593
Quiz ............................................................................................................................... 593
*wiczenia .................................................................................................................... 594
595
Krótkie wprowadzenie ................................................................................................ 595
Podstawowe operacje klas STL map i multimap ............................................. 596
Ustanawianie obiektu std::map ........................................................................ 596
Wstawianie elementów do obiektu STL map lub multimap ................ 597
Wyszukiwanie elementów w obiekcie STL map lub multimap .......... 600
Usuwanie elementów z obiektu STL map lub multimap ....................... 602
Dostarczanie wÏasnego predykatu sortowania ................................................ 606
Podsumowanie ................................................................................................................ 610
Pytania i odpowiedzi .................................................................................................... 610
Warsztaty .......................................................................................................................... 611
Quiz ............................................................................................................................... 612
*wiczenia .................................................................................................................... 612
Lekcja 21. Klasy STL map i multimap
16
C++ dla kaĝdego
CzÚĂÊ IV Jeszcze wiÚcej STL
Lekcja 22. Zrozumienie obiektów funkcji
Lekcja 23. Algorytmy STL
615
Koncepcja obiektów funkcji i predykatów .............................................................615
Typowe aplikacje obiektów funkcji ........................................................................616
Funkcje jednoargumentowe ...............................................................................616
Predykat jednoargumentowy ............................................................................621
Funkcje dwuargumentowe .................................................................................623
Predykat dwuargumentowy ...............................................................................626
Podsumowanie ................................................................................................................629
Pytania i odpowiedzi .....................................................................................................629
Warsztaty ...........................................................................................................................630
Quiz ................................................................................................................................630
*wiczenia ....................................................................................................................630
631
Co to s¦ algorytmy STL? ...............................................................................................631
Klasyfikacja algorytmów STL ....................................................................................631
Algorytmy niezmienne ..........................................................................................632
Algorytmy zmienne ................................................................................................633
UĂywanie algorytmów STL ........................................................................................636
Zliczanie i znajdowanie elementów ................................................................636
Wyszukiwanie elementu lub zakresu w kolekcji .......................................639
Inicjalizacja elementów w kontenerze wraz
z okreälonymi wartoäciami ..............................................................................642
Przetwarzanie elementów w zakresie za pomoc¦ for_each .................645
Przeprowadzanie transformacji zakresu
za pomoc¦ std::transform .................................................................................647
Operacje kopiowania i usuwania ......................................................................650
Zast¸powanie wartoäci oraz zast¸powanie elementu
na podstawie danego warunku ......................................................................654
Sortowanie i przeszukiwanie posortowanej kolekcji oraz
usuwanie duplikatów ..........................................................................................656
Partycjonowanie zakresu .....................................................................................659
Wstawianie elementów do posortowanej kolekcji ...................................661
Podsumowanie ................................................................................................................664
Pytania i odpowiedzi .....................................................................................................664
Spis treĂci
17
Lekcja 24. Kontenery adaptacyjne: stack i queue
Warsztaty .......................................................................................................................... 665
Quiz ............................................................................................................................... 665
*wiczenia .................................................................................................................... 666
667
Cechy charakterystyczne zachowania stosów i kolejek ............................... 667
Stosy .............................................................................................................................. 667
Kolejki .......................................................................................................................... 668
UĂywanie klasy STL stack .......................................................................................... 668
Ustanawianie obiektu stack ............................................................................... 669
Funkcje skÏadowe klasy stack ........................................................................... 670
UĂywanie klasy STL queue ........................................................................................ 672
Ustanawianie obiektu queue ............................................................................. 673
Funkcje skÏadowe klasy queue ......................................................................... 674
UĂywanie klasy STL priority_queue ...................................................................... 676
Ustanawianie obiektu priority_queue ........................................................... 677
Funkcje skÏadowe klasy priority_queue ....................................................... 678
Podsumowanie ................................................................................................................ 682
Pytania i odpowiedzi .................................................................................................... 682
Warsztaty .......................................................................................................................... 682
Quiz ............................................................................................................................... 682
*wiczenia .................................................................................................................... 683
685
Klasa bitset ........................................................................................................................ 685
Ustanowienie klasy std::bitset .......................................................................... 685
UĂywanie klasy std::bitset i jej elementów skÏadowych .............................. 687
Operatory std::bitset ............................................................................................. 687
Metody skÏadowe klasy std::bitset .................................................................. 687
Klasa vector bool ........................................................................................................ 691
Ustanowienie klasy vector bool ................................................................... 691
UĂywanie klasy vector bool ........................................................................... 692
Podsumowanie ................................................................................................................ 693
Pytania i odpowiedzi .................................................................................................... 694
Warsztaty .......................................................................................................................... 694
Quiz ............................................................................................................................... 695
*wiczenia .................................................................................................................... 695
Lekcja 25. Praca z opcjami bitowymi za pomocÈ STL
18
C++ dla kaĝdego
CzÚĂÊ V Zaawansowane koncepcje C++
Lekcja 26. Sprytne wskaěniki
699
Czym s¦ sprytne wskaĀniki? ......................................................................................699
Na czym polega problem zwi¦zany z uĂywaniem
wskaĀników konwencjonalnych? ..................................................................700
W jaki sposób sprytne wskaĀniki mog¦ pomóc? .......................................701
W jaki sposób s¦ implementowane sprytne wskaĀniki? ..............................701
Typy sprytnych wskaĀników ....................................................................................703
Kopiowanie gϸbokie .............................................................................................704
Mechanizm kopiowania przy zapisie (COW) ..............................................706
Sprytne wskaĀniki zliczania odniesieÑ ..........................................................706
Sprytne wskaĀniki powi¦zane z licznikiem odniesieÑ ............................707
Kopiowanie destrukcyjne ....................................................................................708
UĂywanie klasy std::auto_ptr ....................................................................................710
Popularne biblioteki sprytnych wskaĀników ....................................................712
Podsumowanie ................................................................................................................713
Pytania i odpowiedzi .....................................................................................................713
Warsztaty ...........................................................................................................................714
Quiz ................................................................................................................................714
*wiczenia ....................................................................................................................715
717
Przegl¦d strumieni .........................................................................................................717
Hermetyzacja przepÏywu danych .....................................................................718
Buforowanie ..............................................................................................................719
Strumienie i bufory ........................................................................................................721
Standardowe obiekty wejäcia-wyjäcia ..................................................................722
Przekierowywanie standardowych strumieni ..................................................722
Wejäcie z uĂyciem cin ...................................................................................................723
Wejäciowe ci¦gi tekstowe ....................................................................................725
Problemy z ci¦gami tekstowymi .......................................................................725
Wartoä© zwracana przez cin ...............................................................................728
Inne funkcje skÏadowe w dyspozycji cin ..............................................................729
Wprowadzanie pojedynczych znaków ..........................................................729
Odczytywanie ci¦gów tekstowych z wejäcia standardowego .............732
UĂycie cin.ignore() ..................................................................................................735
Funkcje peek() oraz putback() ..........................................................................737
Lekcja 27. Strumienie
Spis treĂci
19
Lekcja 28. Obsïuga wyjÈtków
Wyjäcie poprzez cout ................................................................................................... 738
Zrzucanie zawartoäci bufora ............................................................................. 739
Funkcje obsÏuguj¦ce wyjäcie .............................................................................. 739
Manipulatory, znaczniki oraz instrukcje formatowa
Pobierz darmowy fragment (pdf)
Gdzie kupić całą publikację:
Opinie na temat publikacji:
Inne popularne pozycje z tej kategorii:
Czytaj również:
Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką :