Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00400 007375 14238999 na godz. na dobę w sumie
C++11. Nowy standard. Ćwiczenia - książka
C++11. Nowy standard. Ćwiczenia - książka
Autor: Liczba stron: 128
Wydawca: Helion Język publikacji: polski
ISBN: 978-83-246-3935-9 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> programowanie >> c++ - programowanie
Porównaj ceny (książka, ebook, audiobook).

Wypróbuj nowe możliwości C++!

C++ to jeden z najpopularniejszych języków programowania. Nie dzieje się tak bez powodu - jego duże możliwości, logiczna struktura oraz zwięzłość i przejrzystość kodu zdobywają serca zarówno amatorów, traktujących programowanie hobbystycznie, jak i profesjonalistów, tworzących zaawansowane aplikacje dla wielkich korporacji. C++ to język żywy i jako taki stale się rozwija. Dowodem tego są kolejne aktualizacje standardu, w tym ostatnia, wprowadzona zaledwie kilka miesięcy temu. Choć w C++11 brak zmian o charakterze rewolucyjnym, proponowane ulepszenia mogą znacznie ułatwić codzienną pracę programistów. Niestety wielu z nas w ogóle z nich nie korzysta, ponieważ nie znamy potencjalnych korzyści, a często nawet nie mamy pojęcia o istnieniu niektórych nowości.

Czas to zmienić. Czas sięgnąć po książkę 'C++11. Nowy standard. Ćwiczenia'. W prosty sposób prezentuje ona najciekawsze i najbardziej przydatne możliwości z najnowszego standardu języka. Autor przedstawia niezbędne narzędzia programistyczne oraz sposoby ich używania, opisuje nowe słowa kluczowe i sytuacje, w których należy je stosować, wyjaśnia zmiany wprowadzone w systemie typów języka oraz podaje nowe metody inicjalizacji tablic i klas. W książce została też poruszona tematyka krotek, bezpiecznych wskaźników, nowych rodzajów konstruktorów, dodatkowych opcji związanych z szablonami oraz funkcji i wyrażeń lambda. Wszystko to jest poparte krótkimi ćwiczeniami, dzięki którym utrwalisz wiedzę w praktyce.

Opanuj nowości w standardzie C++11. Praktycznie!

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: Michał Mrowiec 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?cwcp11 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/cwcp11.zip ISBN: 978-83-246-3935-9 Copyright © Helion 2012 Printed in Poland. • Kup książkę • Poleć książkę • Oceń książkę • Księgarnia internetowa • Lubię to! » Nasza społeczność Spis treĂci WstÚp Lepsze typy wyliczeniowe enum class Inicjalizowanie tablic Inicjalizowanie klas na podobieñstwo tablic Rozdziaï 1. NarzÚdzia programistyczne Rozdziaï 2. Sïowo kluczowe auto, czyli kompilator okreĂla typ Rozdziaï 3. Sïowo kluczowe decltype, czyli typ taki sam jak tamten Rozdziaï 4. Sïowo kluczowe constexpr, czyli wyraĝenia staïe Rozdziaï 5. Sïowo kluczowe nullptr Rozdziaï 6. Rozdziaï 7. Rozdziaï 8. Rozdziaï 9. Krotki (rekordy) Rozdziaï 10. Metody oznaczone default lub delete Rozdziaï 11. Bezpieczne wskaěniki unique_ptr i shared_ptr Rozdziaï 12. Kopiowanie i przenoszenie Rozdziaï 13. PÚtla for( ... : ...) dla kolekcji danych Rozdziaï 14. Prostsze tworzenie obiektów 5 9 13 19 23 31 35 39 47 53 61 69 79 87 91 4 C++11. Nowy standard • mwiczenia Rozdziaï 15. Sïowo kluczowe explicit i mocniejsza ochrona przed przypadkowymi konwersjami Rozdziaï 16. Operator sizeof() zna rozmiary elementów klasy Rozdziaï 17. Szablony ze zmiennÈ liczbÈ argumentów Rozdziaï 18. Funkcje i wyraĝenia lambda Zakoñczenie 95 99 101 113 123 13 PÚtla for( ... : ...) dla kolekcji danych Standard c++11 wprowadza uproszczonÈ pÚtlÚ for( ...), prze- biegajÈcÈ przez caïÈ kolekcjÚ podanÈ jako argument. PÚtla ta jest odpowiednikiem znanej z innych jÚzyków pÚtli foreach( ...) — rób coĂ dla kaĝdego elementu kolekcji. m W I C Z E N I E 13.1 Wypisanie wszystkich elementów tablicy za pomocÈ nowej pÚtli for( ...) Zadeklaruj tablicÚ i za pomocÈ nowej pÚtli for() dla kolekcji wyprowadě na ekran jej elementy (rysunek 13.1): ... int tablica[5] = {1, 2, 3, 4, 5}; for(int element : tablica) { cout element endl; } ... Nowa pÚtla for() ma dwa pola: pole okreĂlenia zmiennej o typie zgod- nym z typami w tablicy i pole okreĂlenia samej tablicy. 88 C++11. Nowy standard • mwiczenia Rysunek 13.1. Nowa pÚtla for() przebiega po tablicy i wyĂwietla jej elementy m W I C Z E N I E 13.2 Modyfikacja wszystkich elementów tablicy za pomocÈ nowej pÚtli for( ...) Zadeklaruj dla odmiany tablicÚ vector i za pomocÈ nowej pÚtli for() dla kolekcji zmodyfikuj elementy kolekcji: ... #include vector ... int main() { vector double v={1, 2, 3}; for( double r : v) { r = 3.14; } cout v[ 0] , v[ 1] , v[ 2] endl; system( PAUSE ); return EXIT_SUCCESS; } W stosunku do poprzedniego Êwiczenia zmienna robocza r zostaïa za- deklarowana jako referencja (odwoïanie) i pÚtla for dla kolekcji umiesz- cza pod niÈ kolejno wszystkie elementy tablicy. Modyfikacja referencji oznacza modyfikacjÚ oryginalnego elementu tablicy. Rysunek 13.2. Modyfikacja kolekcji za pomocÈ nowej pÚtli dla zakresów dla kolekcji Rozdziaï 13. • PÚtla for( ... : ...) dla kolekcji danych 89 Podsumowanie WiÚkszoĂÊ iteracji po kolekcjach odbywa siÚ „od poczÈtku do koñca”. Dlaczego tÚ pÚtlÚ otrzymaliĂmy tak póěno? 90 C++11. Nowy standard • mwiczenia 14 Prostsze tworzenie obiektów W standardzie c++11 znajdujemy dwa nowe drobiazgi: T zadeklarowane w typach uĝytkownika (klasach, strukturach) dane mogÈ byÊ inicjalizowane bezpoĂrednio, a nie — jak dotÈd — w konstruktorach; T konstruktory typów uĝytkownika mogÈ wywoïywaÊ inne konstruktory, co dotychczas teĝ byïo zabronione. m W I C Z E N I E 14.1 Inicjalizowanie ustroju klasy bezpoĂrednio i za pomocÈ konstruktorów Zadeklaruj klasÚ, w której zademonstrujesz zarówno bezpoĂrednie ini- cjalizowanie zmiennej, jak i stare rozwiÈzanie — czyli inicjalizacjÚ zmiennej za pomocÈ konstruktora: ... class Stara { public: int a; Stara():a( 17){cout Konstruktor endl;} }; 92 C++11. Nowy standard • mwiczenia class Nowa { public: int a = 17; Nowa(){ cout Konstruktor endl;} }; int main() { Stara s; cout s.a endl; Nowa n; cout n.a endl; system( PAUSE ); return EXIT_SUCCESS; } Dwie klasy majÈ pewnÈ zmiennÈ. Klasa Stara inicjalizuje tÚ zmiennÈ za pomocÈ do tej pory jedynej dostÚpnej metody, czyli w konstruktorze (tutaj za pomocÈ tzw. listy inicjalizacyjnej konstruktora). Klasa Nowa inicjalizuje swojÈ zmiennÈ przez bezpoĂrednie przypisanie wartoĂci w momencie deklaracji klasy. Konstruktory mogÈ ewentualnie zmieniÊ tÚ wartoĂÊ. Rysunek 14.1. Niestety, kompilator jeszcze nie zna bezpoĂredniego inicjalizowania. Zgodnie z dotychczasowym standardem jÚzyka domaga siÚ, by bezpoĂrednio inicjalizowana zmienna byïa statyczna i staïa m W I C Z E N I E 14.2 Konstruktor moĝe inicjalizowaÊ klasÚ przez wywoïanie innego konstruktora Przygotuj klasÚ i zaopatrz jÈ w takie konstruktory, by jeden z nich wy- woïywaï inny: ... class T { Rozdziaï 14. • Prostsze tworzenie obiektów 93 private: int a; public: T():a( 17){cout Konstruktor T() endl;} T( double r):T(){cout Konstruktor T( double r) endl;} }; int main() { T a; T b( 3.14); system( PAUSE ); return EXIT_SUCCESS; } Typ T w konstruktorze z argumentem wywoïuje inny konstruktor tejĝe klasy. Do tej pory nie byïo to moĝliwe — kaĝdy konstruktor musiaï przeprowadzaÊ niezaleĝnie inicjalizacjÚ obiektu. Konstruktor mógï wy- woïywaÊ innego konstruktora tylko w obrÚbie drzewa dziedziczenia. MówiÈc inaczej — konstruktor klasy pochodnej wywoïywaï konstruk- tora klasy bazowej. W obrÚbie jednej klasy takie wywoïania byïy nie- moĝliwe. Rysunek 14.2. Kompilator jeszcze nie realizuje opisywanego tu usprawnienia. Komunikat gïosi, ĝe wywoïanie konstruktora przez konstruktor byïoby moĝliwe, gdyby nasza klasa dziedziczyïa po sobie samej Podsumowanie Chyba kaĝdy mïody programista, który deklarowaï pierwszÈ klasÚ w swoim ĝyciu, zastanawiaï siÚ, dlaczego nie moĝe zainicjowaÊ jej pól wartoĂciami. Byïyby to jakby wartoĂci domyĂlne, wstÚpne, które kon- struktory mogÈ zmieniÊ. 94 C++11. Nowy standard • mwiczenia Dodatkowo otrzymujemy mechanizm wywoïywania jednego konstruk- tora przez innego. JeĂli obydwa konstruktory tak samo (lub podobnie) inicjalizujÈ klasÚ — po co mamy powtarzaÊ ten sam kod?
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

C++11. Nowy standard. Ćwiczenia
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ą: