C++ cwiczenia zaawansowane.pdf

(437 KB) Pobierz
C:\Andrzej\PDF\ABC nagrywania p³yt CD\1 strona.cdr
IDZ DO
PRZYK£ADOW Y ROZDZIA£
C++. Æwiczenia
SPIS TRECI
zaawansowane
KATALOG KSI¥¯EK
Autor: Andrzej Stasiewicz
ISBN: 83-7361-766-3
Format: B5, stron: 120
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
„C++. Æwiczenia zaawansowane” to kontynuacja ksi¹¿ki „C++. Æwiczenia praktyczne”
przeznaczona dla tych, którzy chc¹ pog³êbiaæ swoj¹ wiedzê o najpopularniejszym
obecnie jêzyku programowania. Przedstawia kolejne, niezwykle istotne zagadnienia
zwi¹zane z programowaniem w C++, mianowicie zasady programowania obiektowego.
Przeczytasz o klasach, metodach i szablonach oraz poznasz w praktyce metody
stosowania tych mechanizmów we w³asnych programach. Nauczysz siê technik
stosowania gotowych struktur danych, takich jak dynamiczna tablica, kolejka,
lista oraz stos.
• Instalacja rodowiska programistycznego
• Operacje zapisu i odczytu plików
• Klasy — definiowanie i stosowanie
• Konstruktorzy i destruktor klas
• Hierarchia klas i dziedziczenie
• Obs³uga wyj¹tków
• Stosowanie szablonów
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
400220318.005.png 400220318.006.png 400220318.007.png 400220318.008.png
Spis treci
Wprowadzenie.........................................................................................................................................................5
Rozdział 1. Piszesz pierwsze programy..............................................................................................................................9
Instalacja rodowiska programistycznego .......................................................................... 9
Funkcja main() i ogólny szkic programu .......................................................................... 11
Słowo kluczowe namespace, czyli przestrzenie nazw ...................................................... 14
Podsumowanie.................................................................................................................. 16
Rozdział 2. Operacje na plikach............................................................................................................................................17
Otwieranie plików do zapisu i odczytu............................................................................. 17
Modyfikowanie standardowych operacji wejcia i wyjcia.............................................. 20
Podsumowanie.................................................................................................................. 23
Rozdział 3. Klasy, czyli Twoje własne typy danych....................................................................................................25
Deklarowanie i definiowanie klasy................................................................................... 25
Funkcje zaprzyja/nione z klasami .................................................................................... 28
Statyczne składniki klasy.................................................................................................. 30
Funkcje statyczne klasy .................................................................................................... 32
Pola bitowe w klasach ...................................................................................................... 33
Słowo kluczowe this......................................................................................................... 34
Podsumowanie.................................................................................................................. 35
Rozdział 4. Konstruktory i destruktor...............................................................................................................................37
Konstruktor bezargumentowy, zwany domylnym........................................................... 37
Konstruktory merytoryczne .............................................................................................. 38
Lista inicjalizacyjna konstruktora..................................................................................... 39
Konstruktor kopiuj4cy ...................................................................................................... 40
Konstruktory konwertuj4ce .............................................................................................. 42
Konstruktor a składniki stałe klasy ................................................................................... 42
Destruktor ......................................................................................................................... 43
Gdy w klasie brakuje konstruktora… ............................................................................... 44
Podsumowanie.................................................................................................................. 46
Rozdział 5. Przeci'(anie operatorów................................................................................................................................47
Operatory zadeklarowane w klasie ................................................................................... 47
Operator przypisania = ..................................................................................................... 50
Operatory zadeklarowane poza klas4 ............................................................................... 52
Operator wyprowadzania danych <<................................................................................ 53
Podsumowanie.................................................................................................................. 54
4
C++. wiczenia zaawansowane
Rozdział 6. Konwersje, czyli przekształcanie danych jednych typów w inne...........................................55
Operator konwersji ........................................................................................................... 55
Niejawne konwersje za pomoc4 operatora konwersji....................................................... 57
Jednoargumentowe konstruktory konwersji ..................................................................... 58
Niejawne konwersje za pomoc4 konstruktora .................................................................. 58
Konstruktor jednoargumentowy explicit .......................................................................... 59
Operator static_cast .......................................................................................................... 60
Operator const_cast .......................................................................................................... 61
Operator dynamic_cast ..................................................................................................... 62
Operator reinterpret_cast .................................................................................................. 63
Podsumowanie.................................................................................................................. 63
Rozdział 7. Dziedziczenie, czyli hierarchie klas.........................................................................................................65
Dziedziczenie po klasie a zawieranie klasy ...................................................................... 65
Rodzaje dziedziczenia ...................................................................................................... 67
Konstruktory klasy pochodnej.......................................................................................... 70
Konstruktor kopiuj4cy klasy pochodnej ........................................................................... 72
Operator przypisania w klasie pochodnej ............................................................................ 73
Destruktor w klasie pochodnej ......................................................................................... 74
Funkcje wirtualne ............................................................................................................. 75
Funkcje czysto wirtualne i klasy abstrakcyjne.................................................................. 76
Polimorfizm...................................................................................................................... 77
Destruktor wirtualny......................................................................................................... 79
Podsumowanie.................................................................................................................. 80
Rozdział 8. Obsługa sytuacji wyj'tkowych...................................................................................................................83
Ogólny schemat obsługi wyj4tków................................................................................... 83
Zgłaszanie i identyfikacja wyj4tków ................................................................................ 84
Klasy wyj4tków ................................................................................................................ 86
Wyj4tki i nowy styl pisania nagłówków funkcji............................................................... 88
Hierarchia klas wyj4tków ................................................................................................. 90
Wyj4tki generowane przez funkcje biblioteczne .............................................................. 91
Podsumowanie.................................................................................................................. 93
Rozdział 9. Szablony funkcji i klas.....................................................................................................................................95
Szablony funkcji............................................................................................................... 95
Szablony klas.................................................................................................................... 97
Domylne typy — parametry szablonów ........................................................................ 99
Podsumowanie................................................................................................................ 100
Rozdział 10. Kontener vector..................................................................................................................................................101
Rozmiary wektorów ....................................................................................................... 101
Iteratory .......................................................................................................................... 104
Wyszukiwanie elementu w wektorze.............................................................................. 107
Sortowanie elementów wektora...................................................................................... 108
Tablice wielowymiarowe................................................................................................ 109
Tablice klas..................................................................................................................... 110
ZewnCtrzne funkcje relacji (predykaty) .......................................................................... 114
Podsumowanie................................................................................................................ 116
Zako3czenie...........................................................................................................................................................117
2.
Operacje na plikach
Rozdział
Otwieranie plików do zapisu i odczytu
wiczenie 2.1.
Otwórz plik dyskowy o nazwie test.txt. W pierwszej linii zapisz w nim swoje nazwisko,
w drugiej 10 kolejnych liczb naturalnych, rozdzielonych spacjami (rysunki 2.1a i 2.1b):
!"!!!
#!!!
$%$%&''
#(
)
)
)
400220318.001.png
18
C++. wiczenia zaawansowane
Rysunek 2.1a.
Efekt działania
programu,
wpisujcego
dane do pliku
Rysunek 2.1b.
Zawarto pliku
test.txt, utworzonego
w programie
Standardowy plik do zapisu jest reprezentowany przez obiekt typu . Otwarcie
pliku nastpuje w chwili deklaracji obiektu za pomoc konstruktora, którego argu-
mentem jest dyskowa nazwa pliku. Zapis w pliku realizuje standardowy operator stru-
mieniowego wyj!cia .
wiczenie 2.2.
Napisz program, który odczyta dane z pliku utworzonego w poprzednim %wiczeniu (ry-
sunek 2.2):
*
$&%&''
)
)
)
400220318.002.png 400220318.003.png 400220318.004.png
Zgłoś jeśli naruszono regulamin