Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00359 007260 14258489 na godz. na dobę w sumie
Opus magnum C++11. Programowanie w języku C++ (komplet) - ebook/pdf
Opus magnum C++11. Programowanie w języku C++ (komplet) - ebook/pdf
Autor: Liczba stron: 1696
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-283-4245-3 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ - programowanie
Porównaj ceny (książka, ebook (-40%), audiobook).

'Opus magnum C++11. Programowanie w języku C++' - zestaw obejmuje 3 podręczniki.


Jedno C i same plusy!

Dawno, dawno temu, w głębokich latach osiemdziesiątych ubiegłego wieku pewien duński informatyk zainspirowany językiem C opracował jeden z najważniejszych, najbardziej elastycznych i do dziś niezastąpionych języków programowania — C++. Dziś ten język jest wykorzystywany do tworzenia gier komputerowych, obliczeń naukowych, technicznych, w medycynie, przemyśle i bankowości. NASA posługuje się nim w naziemnej kontroli lotów. Duża część oprogramowania Międzynarodowej Stacji Kosmicznej została napisana w tym języku. Nawet w marsjańskim łaziku Curiosity pracuje program w C++, który analizuje obraz z kamer i planuje dalszą trasę.

Autor tej książki — wybitny specjalista pracujący nad wieloma znaczącymi projektami we francuskich, niemieckich i włoskich instytutach fizyki jądrowej, znany czytelnikom m.in. z genialnej Symfonii C++ — postawił sobie za cel napisanie nowej, przekrojowej książki o tym języku, która w prostym, wręcz przyjacielskim stylu wprowadza czytelnika w fascynujący świat programowania zorientowanego obiektowo. Zobacz, jak potężny jest dzisiaj C++ 11.

Jeżeli chcesz nauczyć się tego języka w łatwy, pogodny, przyjazny sposób, ta książka jest właśnie dla Ciebie.

Dzięki tej książce poznasz:


 

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje naruszenie praw autorskich niniejszej publikacji. Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Autor oraz Wydawnictwo HELION dołożyli wszelkich starań, by zawarte w tej książce informacje były kompletne i rzetelne. Nie biorą jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym ewentualne naruszenie praw patentowych lub autorskich. Autor oraz Wydawnictwo HELION nie ponoszą również żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce. Redaktor prowadzący: Małgorzata Kulik Projekt okładki i opracowanie graficzne książki: Jerzy Grębosz Przygotowanie okładki: Jan Paluch Zdjęcie Mgławicy Orzeł w grafice na okładce oraz zdjęcia łazika Curiosity i powierzchni Marsa – wykorzystane w tytułach rozdziałów – dzięki uprzejmości NASA. Wydanie pierwsze ISBN: 978-83-283-3882-1 Copyright © Jerzy Grębosz 2018 Printed in Poland Wydawnictwo HELION ul. Kościuszki 1c, 44-100 GLIWICE tel. 32 231 22 19, 32 230 98 63 e-mail: helion@helion.pl WWW: http://helion.pl (księgarnia internetowa, katalog książek) Drogi Czytelniku! Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres http://helion.pl/user/opinie/ocpp11 Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję. Kody źródłowe wybranych przykładów dostępne są pod adresem: ftp://ftp.helion.pl/przyklady/ocpp11.zip • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność V Spis treœci trzech tomów Tom 1 0 Proszê tego nie czytaæ!.........................................................................1 0.1 ZaprzyjaŸnijmy siê! ...............................................................................................................1 1 Startujemy!.............................................................................................8 Pierwszy program ..................................................................................................................8 1.1 1.2 Drugi program .....................................................................................................................13 Æwiczenia ............................................................................................................................18 1.3 2 Instrukcje steruj¹ce.............................................................................20 2.1 Prawda – fa³sz, czyli o warunkach.......................................................................................20 Wyra¿enie logiczne.........................................................................................................20 2.1.1 Zmienna logiczna bool w roli warunku............................................................................21 2.1.2 Stare dobre sposoby z dawnego C++ ..............................................................................21 2.1.3 Instrukcja warunkowa if .......................................................................................................22 2.2 Pêtla while.............................................................................................................................26 2.3 Pêtla do...while.......................................................................................................................27 2.4 Pêtla for ................................................................................................................................28 2.5 Instrukcja switch ...................................................................................................................31 2.6 Co wybraæ: switch czy if...else? .............................................................................................33 2.7 Instrukcja break ....................................................................................................................36 2.8 Instrukcja goto......................................................................................................................37 2.9 Instrukcja continue................................................................................................................39 2.10 Klamry w instrukcjach steruj¹cych......................................................................................40 2.11 2.12 Æwiczenia ............................................................................................................................41 3 Typy ......................................................................................................44 Deklaracje typu....................................................................................................................44 3.1 Systematyka typów z jêzyka C++........................................................................................45 3.2 3.3 Typy fundamentalne............................................................................................................46 Typy przeznaczone do pracy z liczbami ca³kowitymi.....................................................46 3.3.1 Typy do przechowywania znaków alfanumerycznych....................................................47 3.3.2 3.3.3 Typy reprezentuj¹ce liczby zmiennoprzecinkowe ..........................................................47 Poleć książkęKup książkę VI 3.3.4 3.3.5 3.3.6 3.4 3.5 3.6 3.7 3.7.1 3.7.2 3.7.3 3.7.4 3.7.5 3.7.6 3.7.7 3.8 3.9 3.10 3.10.1 3.10.2 3.10.3 3.10.4 3.10.5 3.10.6 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.17.1 3.17.2 3.18 3.19 3.20 3.21 3.22 bool – typ do reprezentacji obiektów logicznych............................................................48 Kwestia dok³adnoœci .......................................................................................................49 Jak poznaæ limity (ograniczenia) typów wbudowanych..................................................51 Typy o precyzyjnie ¿¹danej szerokoœci ...............................................................................55 InicjaLIZacja, czyli nadanie wartoœci w momencie narodzin ..............................................59 Definiowanie obiektów „w biegu” ......................................................................................60 Sta³e dos³owne.....................................................................................................................62 Sta³e dos³owne typu bool .................................................................................................63 Sta³e bêd¹ce liczbami ca³kowitymi .................................................................................63 Sta³e reprezentuj¹ce liczby zmiennoprzecinkowe ...........................................................66 Sta³a dos³owna nullptr – dla wskaŸników.........................................................................67 Sta³e znakowe .................................................................................................................68 Sta³e tekstowe, napisy, albo po prostu stringi .................................................................71 Surowe sta³e tekstowe (napisy, stringi)...........................................................................73 Typy z³o¿one .......................................................................................................................76 Typ void................................................................................................................................77 Zakres wa¿noœci nazwy obiektu a czas ¿ycia obiektu .........................................................78 Zakres: lokalny ...............................................................................................................78 Zakres instrukcji..............................................................................................................79 Zakres: blok funkcji ........................................................................................................79 Zakres: obszar pliku ........................................................................................................80 Zakres: obszar klasy........................................................................................................80 Zakres okreœlony przez przestrzeñ nazw .........................................................................80 Zas³anianie nazw .................................................................................................................85 Specyfikator (przydomek) const ..........................................................................................87 Specyfikator (przydomek) constexpr ....................................................................................88 Obiekty register ....................................................................................................................92 Specyfikator volatile..............................................................................................................92 using oraz typedef – tworzenie dodatkowej nazwy typu .......................................................93 Typy wyliczeniowe enum ....................................................................................................96 Dawne zwyk³e enum a nowe zakresowe enum class ......................................................103 Kilka uwag dla wtajemniczonych .................................................................................105 auto, czyli automatyczne rozpoznawanie typu definiowanego obiektu .............................106 decltype – operator do okreœlania typu zadanego wyra¿enia ..............................................109 Inicjalizacja z pust¹ klamr¹ { }, czyli wartoœci¹ domnieman¹...........................................111 Przydomek alignas – adresy równe i równiejsze ................................................................113 Æwiczenia ..........................................................................................................................115 4 Ope ra tory ...........................................................................................119 Operatory arytmetyczne.....................................................................................................119 4.1 Ope ra to r , czyli reszta z dzielenia (modulo) ..............................................................120 4.1.1 4.1.2 Jednoargumentowe ope ra tory + i – ...............................................................................121 Ope ra tory inkrementacji i dekrementacji ......................................................................121 4.1.3 Ope ra to r przypisania = ..................................................................................................123 4.1.4 Operatory logiczne ............................................................................................................124 4.2 Ope ra tory relacji ...........................................................................................................124 4.2.1 4.2.2 Ope ra tory sumy logicznej || oraz iloczynu logicznego ...........................................125 Wykrzyknik !, czyli ope ra to r negacji ............................................................................126 4.2.3 Operatory bitowe ...............................................................................................................127 4.3 Przesuniêcie w lewo ...............................................................................................128 4.3.1 Przesuniêcie w prawo ..............................................................................................129 4.3.2 4.3.3 Bitowe ope ra tory sumy, iloczynu, negacji, ró¿nicy symetrycznej ................................130 Ró¿nica miêdzy operatorami logicznymi a operatorami bitowymi ...................................130 4.4 Pozosta³e operatory przypisania ........................................................................................132 4.5 Operator uzyskiwania adresu (operator ).........................................................................133 4.6 Poleć książkęKup książkę VII 4.7 4.8 4.9 4.10 4.11 4.12 4.12.1 4.12.2 4.12.3 4.12.4 4.12.5 4.12.6 4.13 4.14 4.15 4.16 Wyra¿enie warunkowe ......................................................................................................134 Operator sizeof ...................................................................................................................135 Operator noexcept...............................................................................................................137 Deklaracja static_assert.......................................................................................................137 Operator alignof informuj¹cy o najkorzystniejszym wyrównaniu adresu ...........................139 Operatory rzutowania ........................................................................................................141 Rzutowanie wed³ug tradycyjnych (niezalecanych) sposobów ......................................141 Rzutowanie za pomoc¹ nowych operatorów rzutowania ..............................................142 Ope ra to r static_cast ........................................................................................................143 Ope ra to r const_cast........................................................................................................145 Ope ra to r dynamic_cast ...................................................................................................146 Ope ra to r reinterpret_cast.................................................................................................147 Operator: przecinek ...........................................................................................................148 Priorytety operatorów ........................................................................................................148 £¹cznoœæ operatorów .........................................................................................................151 Æwiczenia ..........................................................................................................................152 5 Typ string i typ vec tor – pierwsza wzmianka.......................................156 Typ std::string do pracy z tekstami .....................................................................................156 5.1 Typ vector – d³ugi rz¹d obiektów.......................................................................................161 5.2 Zakresowe for.....................................................................................................................169 5.3 5.4 Æwiczenia ..........................................................................................................................172 6 Funkcje...............................................................................................174 Definicja funkcji i jej wywo³anie.......................................................................................174 6.1 6.2 Deklaracja funkcji..............................................................................................................175 Funkcja czêsto wywo³uje inn¹ funkcjê..............................................................................177 6.3 Zwracanie przez funkcjê rezultatu .....................................................................................177 6.4 Obie k t tworzony za pomoc¹ auto, a ini cja li zo wany rezultatem funkcji ........................179 6.4.1 O zwracaniu (lub niezwracaniu) rezultatu przez funkcjê main ......................................180 6.4.2 6.5 Nowy, alternatywny sposób deklaracji funkcji..................................................................181 Stos ....................................................................................................................................183 6.6 Przesy³anie argumentów do funkcji przez wartoœæ............................................................184 6.7 Przesy³anie argumentów przez referencjê..........................................................................185 6.8 Po¿yteczne okreœlenia: lwartoœæ i rwartoœæ........................................................................188 6.9 6.10 Referencje do lwartoœci i referencje do rwartoœci jako argumenty funkcji........................190 Który sposób przesy³ania argu men tu do funkcji wybraæ?.............................................197 6.10.1 Kiedy deklaracja funkcji nie jest konieczna? ....................................................................198 6.11 Argumenty domniemane ...................................................................................................199 6.12 Ciekawostki na temat argumentów domniemanych......................................................202 6.12.1 6.13 Nienazwany argument .......................................................................................................207 Funkcje inline (w linii)........................................................................................................208 6.14 6.15 Przypomnienie o zakresie wa¿noœci nazw deklarowanych wewn¹trz funkcji ...................212 6.16 Wybór zakresu wa¿noœci nazwy i czasu ¿ycia obiektu......................................................212 Obiekty globalne ..........................................................................................................212 6.16.1 6.16.2 Obiekty automatyczne...................................................................................................213 Obiekty lokalne statyczne .............................................................................................214 6.16.3 Funkcje w programie sk³adaj¹cym siê z kilku plików.......................................................218 6.17 Nazwy statyczne globalne.............................................................................................222 6.17.1 Funkcja zwracaj¹ca rezultat bêd¹cy referencj¹ lwartoœci ..................................................223 6.18 6.19 Funkcje rekurencyjne ........................................................................................................228 Funkcje biblioteczne..........................................................................................................237 6.20 Funkcje constexpr ...............................................................................................................240 6.21 Wymogi, które musi spe³niaæ funkcja constexpr (w standardzie C++11) ......................242 6.21.1 Poleć książkęKup książkę VIII 6.21.2 6.21.3 6.22 6.22.1 6.23 Przyk³ad poka zu j¹cy aspekty funkcji constexpr.............................................................243 Argu men ty funkcji constexpr , bêd¹ce referencjami ......................................................252 Definiowanie referencji przy u¿yciu s³owa auto ................................................................253 Gdy inicjalizatorem jest wywo³anie funkcji zwracaj¹cej referencjê..............................260 Æwiczenia ..........................................................................................................................263 7 Preprocesor .......................................................................................270 Dyrektywa pusta # .............................................................................................................270 7.1 Dyrektywa #define..............................................................................................................270 7.2 Dyrektywa #undef ..............................................................................................................272 7.3 Makrodefinicje...................................................................................................................273 7.4 7.5 Sklejacz nazw argumentów, czyli operator ##...................................................................275 Parametr aktualny makrodefinicji – w postaci tekstu ........................................................276 7.6 Dyrektywy kompilacji warunkowej...................................................................................276 7.7 Dyrektywa #error................................................................................................................280 7.8 Dyrektywa #line .................................................................................................................281 7.9 7.10 Wstawianie treœci innych plików do tekstu kompilowanego w³aœnie pliku.......................281 Dyrektywy zale¿ne od implementacji ...............................................................................283 7.11 Nazwy predefiniowane ......................................................................................................283 7.12 7.13 Æwiczenia ..........................................................................................................................286 8 Tablice ................................................................................................289 Co to jest tablica ................................................................................................................289 8.1 Elementy tablicy ................................................................................................................290 8.2 Inicjalizacja tablic..............................................................................................................292 8.3 8.4 Przekazywanie tablicy do funkcji ......................................................................................293 Przyk³ad z tablic¹ elementów typu enum ...........................................................................297 8.5 Tablice znakowe ................................................................................................................299 8.6 8.7 Æwiczenia ..........................................................................................................................307 9 Tablice wielowymiarowe ..................................................................312 Tablica tablic .....................................................................................................................312 9.1 Przyk³ad programu pracuj¹cego z tablic¹ dwuwymiarow¹................................................314 9.2 Gdzie w pamiêci jest dany element tablicy........................................................................316 9.3 9.4 Typ wyra¿eñ zwi¹zanych z tablic¹ wielowymiarow¹........................................................316 Przesy³anie tablic wielowymiarowych do funkcji .............................................................318 9.5 9.6 Æwiczenia ..........................................................................................................................320 10 Wektory wielowymiarowe.................................................................322 Najpierw przypomnienie istotnych tu cech klasy vector ....................................................322 10.1 Jak za pomoc¹ klasy vector budowaæ tablice wielowymiarowe .........................................323 10.2 Funkcja pokazuj¹ca zawartoœæ wektora dwuwymiarowego ..............................................324 10.3 10.4 Definicja dwuwymiarowego wektora – pustego................................................................326 10.5 Definicja wektora dwuwymiarowego z list¹ inicjalizatorów .............................................327 10.6 Wektor dwuwymiarowy o ¿¹danych rozmiarach, choæ bez inicjalizacji ...........................328 Zmiana rozmiarów wektora dwuwymiarowego funkcj¹ resize..........................................329 10.7 Zmiany rozmiaru wektora 2D funkcjami push_back, pop_back..........................................330 10.8 Zmniejszanie rozmiaru wektora dwuwymiarowego funkcj¹ pop_back ..............................333 10.9 10.10 Funkcje mog¹ce modyfikowaæ treœæ wektora 2D ..............................................................333 10.11 Wys³anie rzêdu wektora 2D do funkcji pracuj¹cej z wektorem 1D...................................335 10.12 Ca³oœæ przyk³adu definiuj¹cego wektory dwuwymiarowe ................................................336 10.13 Po co s¹ dwuwymiarowe wektory nieprostok¹tne.............................................................336 Poleć książkęKup książkę IX 10.14 Wektory trójwymiarowe....................................................................................................338 10.15 Sposoby definicji wektora 3D o ustalonych rozmiarach ...................................................341 10.16 Nadawanie pustemu wektorowi 3D wymaganych rozmiarów...........................................345 Zmiana rozmiarów wektora 3D funkcjami resize..........................................................345 10.16.1 Zmiana rozmiarów wektora 3D funkcjami push_back...................................................347 10.16.2 10.17 Trójwymiarowe wektory 3D – nieprostopad³oœcienne ......................................................348 10.18 Æwiczenia ..........................................................................................................................352 11 WskaŸniki – wiadomoœci wstêpne...................................................354 11.1 WskaŸniki mog¹ bardzo u³atwiæ ¿ycie ..............................................................................354 Definiowanie wskaŸników.................................................................................................356 11.2 11.3 Praca ze wskaŸnikiem........................................................................................................357 Definiowanie wskaŸnika z u¿yciem auto ...........................................................................360 11.4 11.5 Wyra¿enie *wskaŸnik jest lwartoœci¹...................................................................................361 Operator rzutowania reinterpret_cast a wskaŸniki...............................................................361 11.6 11.7 WskaŸniki typu void*..........................................................................................................364 11.8 Strza³ na oœlep – wskaŸnik zawsze na coœ wskazuje..........................................................366 WskaŸnik wolno porównaæ z adresem zero – nullptr .....................................................368 11.8.1 11.9 Æwiczenia ..........................................................................................................................368 12 Cztery domeny zastosowania wskaŸników ....................................370 Zastosowanie wskaŸników wobec tablic ...........................................................................370 12.1 Æwiczenia z mechaniki ruchu wskaŸnika......................................................................370 12.1.1 U¿ycie wskaŸnika w pracy z tablic¹..............................................................................374 12.1.2 Arytmetyka wskaŸników...............................................................................................378 12.1.3 12.1.4 Porównywanie wskaŸników..........................................................................................380 Zastosowanie wskaŸników w argumentach funkcji...........................................................381 12.2 Jeszcze raz o przesy³aniu tablic do funkcji....................................................................385 12.2.1 Odbieranie tablicy jako wskaŸnik .................................................................................385 12.2.2 Argu men t formalny bêd¹cy wskaŸnikiem do obiektu const ..........................................387 12.2.3 12.3 Zastosowanie wskaŸników przy dostêpie do konkretnych komórek pamiêci....................390 Rezerwacja obszarów pamiêci ...........................................................................................391 12.4 Ope ra tory new i de lete albo Oratorium Stworzenie Œwiata............................................392 12.4.1 Ope ra to r new a s³owo kluczowe auto.............................................................................396 12.4.2 Ini cja li za cja obiektu tworzonego ope ra torem new.........................................................396 12.4.3 Ope ra torem new mo¿emy tak¿e tworzyæ obiekty sta³e..................................................397 12.4.4 Dynamiczna alokacja tablicy.........................................................................................398 12.4.5 Tablice wielowymiarowe tworzone ope ra torem new ....................................................399 12.4.6 Umiejscawiaj¹cy ope ra to r new ......................................................................................402 12.4.7 „Przychodzimy, odchodzimy – cichuteñko, na...” ........................................................407 12.4.8 12.4.9 Zapas pamiêci to nie studnia bez dna ...........................................................................409 Nowy sposób powiadomienia: rzucenie wyj¹tku std::bad_alloc.....................................410 12.4.10 Funkcja set_new_han dler................................................................................................412 12.4.11 12.5 Æwiczenia ..........................................................................................................................414 13 WskaŸniki – runda trzecia ................................................................418 Sta³e wskaŸniki ..................................................................................................................418 13.1 Sta³e wskaŸniki a wskaŸniki do sta³ych .............................................................................419 13.2 Wierzch i g³êbia ............................................................................................................420 13.2.1 Definiowanie wskaŸnika z u¿yciem auto ...........................................................................421 13.3 Sym bol zastêpczy auto a opuszczanie gwiazdki przy definiowaniu wskaŸnika............424 13.3.1 Sposoby ustawiania wskaŸników ......................................................................................426 13.4 Parada k³amców, czyli o rzutowaniu const_cast.................................................................428 13.5 Poleć książkęKup książkę X 13.6 Tablice wskaŸników ..........................................................................................................432 13.7 Wariacje na temat C-stringów ..........................................................................................434 Argumenty z linii wywo³ania programu............................................................................441 13.8 13.9 Æwiczenia ..........................................................................................................................444 14 WskaŸniki do funkcji .........................................................................446 14.1 WskaŸnik, który mo¿e wskazywaæ na funkcjê ..................................................................446 14.2 Æwiczenia z definiowania wskaŸników do funkcji ...........................................................449 14.3 WskaŸnik do funkcji jako argument innej funkcji.............................................................455 Tablica wskaŸników do funkcji .........................................................................................459 14.4 U¿ycie deklaracji using i typedef w œwiecie wskaŸników ..................................................464 14.5 Alias przydatny w argumencie funkcji..........................................................................464 14.5.1 14.5.2 Alias przydatny w defi ni cji tablicy wskaŸników do funkcji .........................................465 U¿ycie auto lub decltype do automatycznego rozpoznania potrzebnego typu ....................466 14.6 14.7 Æwiczenia ..........................................................................................................................468 15 Prze³adowanie nazwy funkcji...........................................................470 Co oznacza prze³adowanie.................................................................................................470 15.1 Prze³adowanie od kuchni...................................................................................................473 15.2 Jak mo¿emy prze³adowywaæ, a jak siê nie da? ..................................................................473 15.3 Czy prze³adowanie nazw funkcji jest technik¹ orientowan¹ obiektowo?..........................476 15.4 15.5 Linkowanie z modu³ami z innych jêzyków ......................................................................477 Prze³adowanie a zakres wa¿noœci deklaracji funkcji .........................................................478 15.6 Rozwa¿ania o identycznoœci lub odmiennoœci typów argumentów...................................480 15.7 Prze³adowanie a typy tworzone z us ing lub typedef oraz typy enum ..............................481 15.7.1 Tablica a wskaŸnik........................................................................................................481 15.7.2 15.7.3 Pewne szczegó³y o tablicach wielowymiarowych.........................................................482 Prze³adowanie a re fe ren cja............................................................................................484 15.7.4 Identycznoœæ typów: T, const T, vol a tile T.......................................................................485 15.7.5 Prze³adowanie a typy: T*, vol a tile T*, const T*.................................................................486 15.7.6 Prze³adowanie a typy: T , vol a tile T , const T ..............................................................487 15.7.7 15.8 Adres funkcji prze³adowanej .............................................................................................488 Zwrot rezultatu bêd¹cego adresem funkcji prze³adowanej............................................490 15.8.1 15.9 Kulisy dopasowywania argumentów do funkcji prze³adowanych.....................................492 15.10 Etapy dopasowania ...........................................................................................................493 Etap 1. Dopasowanie dok³adne .....................................................................................493 15.10.1 15.10.2 Etap 1a. Dopasowanie dok³adne, ale z tzw. trywialn¹ konwersj¹ .................................494 Etap 2. Dopasowanie z awansem (z promocj¹).............................................................495 15.10.3 Etap 3. Próba dopasowania za pomoc¹ konwersji standardowych ...............................497 15.10.4 Etap 4. Dopasowanie z u¿yciem konwersji zdefiniowanych przez u¿ytkownika .........499 15.10.5 15.10.6 Etap 5. Dopasowanie do funkcji z wielokropkiem .......................................................499 15.11 WskaŸników nie dopasowuje siê inaczej ni¿ dos³ownie....................................................499 15.12 Dopasowywanie wywo³añ z kilkoma argumentami ..........................................................500 15.13 Æwiczenia ..........................................................................................................................501 16 Klasy...................................................................................................504 Typy definiowane przez u¿ytkownika...............................................................................504 16.1 Sk³adniki klasy ..................................................................................................................506 16.2 Sk³adnik bêd¹cy obiektem ................................................................................................507 16.3 Kapsu³owanie ...................................................................................................................508 16.4 16.5 Ukrywanie informacji........................................................................................................509 16.6 Klasa a obiekt ....................................................................................................................512 16.7 Wartoœci wstêpne w sk³adnikach nowych obiektów. Inicjalizacja „w klasie” ..................514 16.8 Funkcje sk³adowe .............................................................................................................517 Poleć książkęKup książkę XI Pos³ugiwanie siê funkcjami sk³adowymi ......................................................................517 16.8.1 Definiowanie funkcji sk³adowych ................................................................................518 16.8.2 Jak to w³aœciwie jest? (this) ................................................................................................523 16.9 16.10 Odwo³anie siê do publicznych danych sk³adowych obiektu .............................................525 16.11 Zas³anianie nazw ...............................................................................................................526 Nie siêgaj z klasy do obiektów globalnych ...................................................................529 16.11.1 16.12 Prze³adowanie i zas³oniêcie równoczeœnie ........................................................................530 16.13 Nowa klasa? Osobny plik!.................................................................................................530 16.13.1 Poznajmy praktyczn¹ realizacjê wieloplikowego programu .........................................533 Zasada umieszczania dyrektywy us ing namespace w plikach ........................................545 16.13.2 Przesy³anie do funkcji argumentów bêd¹cych obiektami..................................................545 16.14 Przesy³anie obiektu przez wartoœæ ................................................................................545 16.14.1 16.14.2 Przesy³anie przez referencjê .........................................................................................547 16.15 Konstruktor – pierwsza wzmianka ...................................................................................548 16.16 Destruktor – pierwsza wzmianka ......................................................................................553 Sk³adnik statyczny.............................................................................................................557 16.17 Do czego mo¿e siê przydaæ sk³adnik statyczny w klasie?.............................................566 16.17.1 Statyczna funkcja sk³adowa...............................................................................................566 16.18 16.18.1 Dekla ra cja sk³adnika statycznego maj¹ca inicjalizacjê „w klasie”................................571 Funkcje sk³adowe typu const oraz volatile...........................................................................577 16.19 Prze³adowanie a funkcje sk³adowe const i vol a tile..........................................................581 16.19.1 16.20 Struktura ............................................................................................................................582 16.21 Klasa bêd¹ca agregatem. Klasa bez konstruktora ..............................................................582 Funkcje sk³adowe z przydomkiem constexpr .....................................................................585 16.22 Specyfikator mutable ..........................................................................................................591 16.23 16.24 Bardziej rozbudowany przyk³ad zastosowania klasy.........................................................593 16.25 Æwiczenia ..........................................................................................................................603 Tom 2 17 Biblioteczna klasa std::string ...............................................................609 17.1 Rozwi¹zanie przechowywania tekstów musia³o siê znaleŸæ .............................................609 Klasa std::string to przecie¿ nasz stary znajomy .................................................................611 17.2 Definiowanie obiektów klasy string ...................................................................................612 17.3 U¿ycie operatorów =, +, += w pracy ze stringami ..............................................................617 17.4 Pojemnoœæ, rozmiar i d³ugoœæ stringu................................................................................618 17.5 BliŸniacze funkcje size() i length()..................................................................................618 17.5.1 Funkcja sk³adowa empty................................................................................................619 17.5.2 Funkcja sk³adowa max_size ...........................................................................................619 17.5.3 Funkcja sk³adowa ca pac ity.............................................................................................619 17.5.4 Funkcje sk³adowe re serve i shrink_to_fit .........................................................................621 17.5.5 resize – zmiana d³ugoœci stringu „na si³ê” .....................................................................622 17.5.6 Funkcja sk³adowa clear..................................................................................................624 17.5.7 U¿ycie operatora [ ] oraz funkcji at ....................................................................................624 17.6 Dzia³anie ope ra tora [ ]....................................................................................................625 17.6.1 Dzia³anie funkcji sk³adowej at ......................................................................................626 17.6.2 Przebieganie po wszystkich literach stringu zakresowym for........................................629 17.6.3 Funkcje sk³adowe front i back.............................................................................................629 17.7 Jak umieœciæ w tekœcie liczbê?...........................................................................................630 17.8 17.9 Jak wczytaæ liczbê ze stringu? ...........................................................................................632 Poleć książkęKup książkę XII Praca z fragmentem stringu, czyli z substringiem .............................................................635 17.10 Funkcja sk³adowa substr ....................................................................................................636 17.11 Szukanie zadanego substringu w obiekcie klasy string – funkcje find ................................637 17.12 Szukanie rozpoczynane od koñca stringu..........................................................................640 17.13 17.14 Szukanie w stringu jednego ze znaków z zadanego zestawu.............................................641 17.15 Usuwanie znaków ze stringu – erase i pop_back................................................................643 17.16 Wstawianie znaków do istniej¹cego stringu – funkcje insert .............................................644 17.17 Zamiana czêœci znaków na inne znaki – replace ................................................................646 17.18 Zagl¹danie do wnêtrza obiektu klasy string funkcj¹ data ...................................................649 17.19 Zawartoœæ obiektu klasy string a C-string...........................................................................650 17.20 W porz¹dku alfabetycznym, czyli porównywanie stringów ..............................................653 Porównywanie stringów za pomoc¹ funkcji com pare....................................................654 17.20.1 Porównywanie stringów przy u¿yciu operatorów ==, !=, , , =, = ..............................658 17.20.2 17.21 Zamiana treœci stringu na ma³e lub wielkie litery ..............................................................659 17.22 Kopiowanie treœci obiektu klasy string do tablicy znakowej – funkcja copy ......................662 17.23 Wzajemna zamiana treœci dwóch obiektów klasy string – funkcja swap ............................662 17.24 Wczytywanie z klawiatury stringu o nieznanej wczeœniej d³ugoœci – getline.....................663 Pu³apka, czyli jak getline mo¿e Ciê zaskoczyæ ..............................................................666 17.24.1 Iteratory stringu .................................................................................................................670 17.25 Iterator do obiektu sta³ego.............................................................................................674 17.25.1 Funkcje sk³adowe klasy string pracuj¹ce z iteratorami ..................................................675 17.25.2 17.26 Klasa string korzysta z techniki przenoszenia ....................................................................680 17.27 Bryk, czyli „pamiêæ zewnêtrzna” programisty ..................................................................681 17.28 Æwiczenia ..........................................................................................................................689 18 Deklaracje przyjaŸni..........................................................................696 18.1 Przyjaciele w ¿yciu i w C++..............................................................................................696 18.2 Przyk³ad: dwie klasy deklaruj¹ przyjaŸñ z t¹ sam¹ funkcj¹...............................................698 18.3 W przyjaŸni trzeba pamiêtaæ o kilku sprawach..................................................................700 Obdarzenie przyjaŸni¹ funkcji sk³adowej innej klasy........................................................703 18.4 Klasy zaprzyjaŸnione.........................................................................................................705 18.5 18.6 Konwencja umieszczania deklaracji przyjaŸni w klasie ....................................................707 Kilka otrzeŸwiaj¹cych s³ów na zakoñczenie......................................................................707 18.7 18.8 Æwiczenia ..........................................................................................................................708 19 Obs³uga sytuacji wyj¹tkowych ........................................................710 Jak daæ znaæ, ¿e coœ siê nie uda³o? ....................................................................................710 19.1 Pierwszy prosty przyk³ad...................................................................................................712 19.2 Kolejnoœæ bloków catch ma znaczenie...............................................................................714 19.3 Który blok catch nadaje siê do z³apania lec¹cego wyj¹tku?...............................................715 19.4 Bloki try mog¹ byæ zagnie¿d¿ane.......................................................................................718 19.5 Obs³uga wyj¹tków w praktycznym programie ..................................................................721 19.6 Specyfikator noexcept i operator noexcept ..........................................................................731 19.7 19.8 Æwiczenia ..........................................................................................................................734 20 Klasa-sk³adnik oraz klasa lokalna ...................................................737 Klasa-sk³adnik, czyli gdy w klasie jest zagnie¿d¿ona definicja innej klasy ......................737 20.1 Prawdziwy przyk³ad zagnie¿d¿enia definicji klasy ...........................................................744 20.2 Lokalna definicja klasy......................................................................................................755 20.3 20.4 Lokalne nazwy typów........................................................................................................758 Æwiczenia ..........................................................................................................................759 20.5 Poleć książkęKup książkę XIII 21 Konstruktory i destruktory...............................................................761 21.1 Konstruktor .......................................................................................................................761 Przyk³ad programu zawieraj¹cego klasê z konstruktorami ...........................................762 21.1.1 Specyfikator (przydomek) explicit ......................................................................................773 21.2 Kiedy i jak wywo³ywany jest konstruktor .........................................................................774 21.3 Konstruowanie obiektów lokalnych..............................................................................774 21.3.1 21.3.2 Konstruowanie obiektów globalnych............................................................................775 Konstrukcja obiektów tworzonych ope ra torem new......................................................775 21.3.3 Jawne wywo³anie konstruktora .....................................................................................776 21.3.4 Dalsze sytuacje, gdy pracuje konstruktor......................................................................779 21.3.5 Destruktor ..........................................................................................................................779 21.4 21.4.1 Jawne wywo³anie destruktora (ogromnie rzadka sytuacja) ...........................................781 Nie rzucajcie wyj¹tków z destruktorów ............................................................................781 21.5 Konstruktor domniemany ..................................................................................................783 21.6 Funkcje sk³adowe z przypiskami = default i = delete...........................................................784 21.7 Konstruktorowa lista inicjalizacyjna sk³adników klasy ....................................................786 21.8 21.8.1 Dla wtajemniczonych: wyj¹tki rzucane z konstruktorowej listy inicjalizacyjnej..........793 Konstruktor deleguj¹cy......................................................................................................797 21.9 Pomocnicza klasa std::initializer_list – lista inicjalizatorów..................................................804 21.10 Zastosowania niekonstruktorowe..................................................................................804 21.10.1 21.10.2 Konfuzja: lista inicjalizatorów a lista inicjalizacyjna ....................................................813 21.10.3 Konstruktor z argu men tem bêd¹cym klamrow¹ list¹ inicjalizatorów ...........................814 21.11 Konstrukcja obiektu, którego sk³adnikiem jest obiekt innej klasy ....................................819 21.12 Konstruktory niepubliczne? ..............................................................................................826 21.13 Konstruktory constexpr mog¹ wytwarzaæ obiekty constexpr...............................................828 21.14 Æwiczenia ..........................................................................................................................838 22 Konstruktory: kopiuj¹cy i przenosz¹cy ..........................................841 Konstruktor kopiuj¹cy (albo inicjalizator kopiuj¹cy) .......................................................841 22.1 Przyk³ad klasy z konstruktorem kopiuj¹cym.....................................................................842 22.2 22.3 Kompilatorowi wolno pomin¹æ niepotrzebne kopiowanie ................................................847 Dlaczego przez referencjê? ................................................................................................849 22.4 22.5 Konstruktor kopiuj¹cy gwarantuj¹cy nietykalnoœæ ...........................................................850 22.6 Wspó³odpowiedzialnoœæ....................................................................................................851 Konstruktor kopiuj¹cy generowany automatycznie ..........................................................851 22.7 22.8 Kiedy powinniœmy sami zdefiniowaæ konstruktor kopiuj¹cy? ..........................................852 Referencja do rwartoœci daje zezwolenie na recykling ......................................................859 22.9 Funkcja std::move, która nie przenosi, a tylko rzutuje........................................................862 22.10 22.11 Odebrana rwartoœæ staje siê w ciele funkcji lwartoœci¹......................................................864 22.12 Konstruktor przenosz¹cy (inicjalizator przenosz¹cy) ........................................................866 22.12.1 Konstruktor przenosz¹cy generowany przez kom pi la tor ..............................................871 Inne konstruktory generowane auto ma ty cz nie..............................................................871 22.12.2 22.12.3 Zwrot obiektu lokalnego przez wartoœæ? Nie u¿ywamy przenoszenia!.........................872 22.13 Tak zwana „semantyka przenoszenia”...............................................................................873 22.14 Nowe pojêcia dla ambitnych: glwartoœæ, xwartoœæ i prwartoœæ .........................................873 decltype – operator rozpoznawania typu bardzo wyszukanych wyra¿eñ............................876 22.15 22.16 Æwiczenia ..........................................................................................................................881 23 Tablice obiektów ...............................................................................883 23.1 Definiowanie tablic obiektów i praca z nimi .....................................................................883 Tablica obiektów definiowana operatorem new.................................................................884 23.2 Inicjalizacja tablic obiektów ..............................................................................................886 23.3 23.3.1 Ini cja li za cja tablicy, której obiekty s¹ agregatami ........................................................886 Poleć książkęKup książkę XIV 23.3.2 Ini cja li za cja tablic, których ele men ty nie s¹ agregatami ...............................................889 23.4 Wektory obiektów .............................................................................................................893 Wektor, którego elementami s¹ obiekty klasy bêd¹cej agregatem ................................895 23.4.1 23.4.2 Wektor, którego elementami s¹ obiekty klasy niebêd¹cej agregatem ...........................897 Æwiczenia ..........................................................................................................................898 23.5 24 WskaŸnik do sk³adników klasy .......................................................899 24.1 WskaŸniki zwyk³e – repetytorium .....................................................................................899 24.2 WskaŸnik do pokazywania na sk³adnik-dan¹ ...................................................................900 24.2.1 Przyk³ad zastosowania wskaŸników do sk³adników klasy............................................904 24.3 WskaŸnik do funkcji sk³adowej.........................................................................................911 Przyk³ad zastosowania wskaŸników do funkcji sk³adowych ........................................913 24.3.1 24.4 Tablica wskaŸników do danych sk³adowych klasy ..........................................................920 Tablica wskaŸników do funkcji sk³adowych klasy ...........................................................921 24.5 24.5.1 Przyk³ad tablicy/wektora wskaŸników do funkcji sk³adowych.....................................922 24.6 WskaŸniki do sk³adników statycznych s¹ zwyk³e .............................................................925 24.7 Æwiczenia ..........................................................................................................................926 25 Konwersje definiowane przez u¿ytkownika ...................................928 Sformu³owanie problemu ..................................................................................................928 25.1 Konstruktory konwertuj¹ce ...............................................................................................930 25.2 25.2.1 Kiedy jawnie, kiedy niejawnie ......................................................................................931 Przyk³ad konwersji konstruktorem................................................................................936 25.2.2 Funkcja konwertuj¹ca – operator konwersji ......................................................................938 25.3 Na co funkcja konwertuj¹ca zamieniaæ nie mo¿e..........................................................944 25.3.1 Który wariant konwersji wybraæ?......................................................................................945 25.4 25.5 Sytuacje, w których zachodzi konwersja...........................................................................947 Zapis jawnego wywo³ania konwersji typów......................................................................948 25.6 Advocatus zapisu przypominaj¹cego: „wywo³anie funkcji” ........................................948 25.6.1 Advocatus zapisu: „rzutowanie” ..................................................................................949 25.6.2 Nie ca³kiem pasuj¹ce argumenty, czyli konwersje kompilatora przy dopasowaniu .........949 25.7 25.8 Kilka rad dotycz¹cych konwersji.......................................................................................954 Æwiczenia ..........................................................................................................................955 25.9 26 Prze³adowanie operatorów...............................................................957 26.1 Co to znaczy prze³adowaæ operator? .................................................................................957 26.2 Prze³adowanie operatorów – definicja i trochê teorii ........................................................959 26.3 Moje zabawki ....................................................................................................................963 Funkcja operatorowa jako funkcja sk³adowa ....................................................................964 26.4 Funkcja operatorowa nie musi byæ przyjacielem klasy .....................................................967 26.5 26.6 Operatory predefiniowane .................................................................................................967 Ile operandów ma mieæ ten operator? ...............................................................................968 26.7 Operatory jednooperandowe .............................................................................................968 26.8 Operatory dwuoperandowe................................................................................................971 26.9 Przyk³ad na prze³adowanie ope ra tora dwuoperandowego ............................................971 26.9.1 26.9.2 Przemiennoœæ ...............................................................................................................973 Choæ ope ra tory inne, to nazwê maj¹ tê sam¹ ................................................................974 26.9.3 26.10 Przyk³ad zupe³nie niematematyczny..................................................................................974 26.11 Operatory postinkrementacji i postdekrementacji – koniec z niesprawiedliwoœci¹...........984 26.12 Praktyczne rady dotycz¹ce prze³adowania ........................................................................986 26.13 Pojedynek: operator jako funkcja sk³adowa czy globalna? ...............................................988 26.14 Zas³ona spada, czyli tajemnica operatora .....................................................................989 Sta³e dos³owne definiowane przez u¿ytkownika ...............................................................995 26.15 26.15.1 Przyk³ad: sta³e dos³owne u¿ytkownika odbierane jako gotowane ................................999 Poleć książkęKup książkę XV 26.15.2 Przyk³ad: sta³e dos³owne u¿ytkownika odbierane na surowo .....................................1008 26.16 Æwiczenia ........................................................................................................................1011 27 Prze³adowanie: =, [ ], ( ), – ...............................................................1015 Cztery operatory, które musz¹ byæ niestatycznymi funkcjami sk³adowymi....................1015 27.1 Operator przypisania = (wersja kopiuj¹ca) ......................................................................1015 27.2 Przyk³ad na prze³adowanie (kopiuj¹cego) ope ra tora przypisania ..............................1017 27.2.1 27.2.2 Przypisanie „kaskadowe”............................................................................................1024 Po co i jak zabezpieczamy siê przed przypisaniem a = a.............................................1026 27.2.3 Jak opowiedzieæ potocznie o koniecznoœci istnienia ope ra tora przypisania?..............1027 27.2.4 Kiedy kopiuj¹cy ope ra to r przypisania nie jest generowany auto ma ty cz nie ...............1029 27.2.5 Przenosz¹cy operator przypisania = ................................................................................1029 27.3 27.4 Specjalne funkcje sk³adowe i nierealna prosta zasada .....................................................1038 Operator [ ] .......................................................................................................................1039 27.5 Operator ()........................................................................................................................1043 27.6 Operator – .....................................................................................................................1049 27.7 „Sprytny wskaŸnik” wykorzystuje prze³adowanie w³aœnie tego ope ra tora .................1051 27.7.1 27.8 Æwiczenia ........................................................................................................................1058 Tom 3 28 Prze³adowanie operatorów new i de lete na u¿ytek klasy ...............1061 Po co prze³adowujemy operatory new i new[ ]..................................................................1061 28.1 Funkcja operator new i operator new[ ] w klasie K .............................................................1062 28.2 Jak siê deklaruje operatory new i delete w klasie?............................................................1065 28.3 Przyk³adowy program z prze³adowanymi new i delete ....................................................1067 28.4 Gdy dopuszczamy rzucanie wyj¹tku std::bad_alloc......................................................1068 28.4.1 Po staremu nadal mo¿na..............................................................................................1073 28.4.2 Rezerwacja tablicy obiektów naszej klasy Twektorek ..................................................1073 28.4.3 Nasze w³asne argu men ty wys³ane do ope ra tora new ...................................................1075 28.4.4 28.4.5 X Ope ra tory new i de lete odziedziczone do klasy pochodnej...................................1077 A jednak polimorfizm jest mo¿liwy............................................................................1079 28.4.6 Tworzenie i likwidowanie tablicy obiektów klasy pochodnej ....................................1079 28.4.7 Ope ra tory new, które nie rzuc¹ wyj¹tku std::bad_alloc .................................................1080 28.4.8 Rzut oka wstecz na prze³adowanie operatorów ...............................................................1085 28.5 28.6 Æwiczenia .................................................................................
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Opus magnum C++11. Programowanie w języku C++ (komplet)
Autor:

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ą: