Używamy cookies, aby ułatwić korzystanie z Portalu. Możesz określić warunki przechowywania, dostępu do plików cookies w Twojej przeglądarce. Dowiedz się więcej.
strona główna Strona główna | Nowości | Promocje | Zapowiedzi Twoje konto | Zarejestruj | Schowek | Kontakt | Pomoc
mapa działów
Szukaj: szukanie zaawansowane
Koszyk
Książki \ Programowanie \ C++

Skuteczny nowoczesny C++. 42 SPOSOBY LEPSZEGO POSŁUGIWANIA SIĘ JĘZYKAMI C++11 i C++14 Język: 1

978-83-7541-155-3

Cena Brutto: 79.80

Cena netto: 76.00

Ilość:
Wersja: Drukowana
Autor Scott Meyers
Liczba_stron 392
Wydawnictwo O'Reilly Media
Oprawa miękka
Data_Wydania 2015-01-30

Skuteczny nowoczesny C++

42 sposoby lepszego posługiwania się językami C++11 i C++14

______________________________________________________________________________________

Książka
z serii:

C++ programowanie podręcznik

 
   Zanim przejdę do omawiania książki pozwolę sobie zacytować recenzje o niej ludzi z których opinią na pewno warto się liczyć. 

Recenzje

             'Osiągnięcie najwyższej wiedzy eksperckiej jest dość trudne. Osiągnięcie perfekcji w nauczaniu - doskonałej strategii i umiejętności upraszczania wyjaśnień  - również nie jest łatwe. Wiesz, że natrafiłeś na skarb, gdy spotkasz jedną osobę mającą te dwie cechy. Skuteczny nowoczesny C++ to nadzwyczajne osiągnięcie wytrawnego autora technicznego.
     Jasne, zrozumiałe i ustawione w kolejności wyjaśniania zostały ułożone na podstawach złożonych i łączących się tematów, a wszystko w rzeczowym, literackim stylu. Znalezienie błędu technicznego, nudnego fragmentu lub niedopracowanego zdania jest równie nieprawdopodobne w książce Skuteczny nowoczesny C++'
Andrei Alexandrescu
doktor, naukowiec, pracownik Facebooka
i autor książki Modern C++ Design


             'I co, nadal interesujesz się językiem C++?  Warto! Nowoczesny C++ (czyli C++11/C+14) to znacznie więcej niż odnowienie standardu. Nowe funkcjonalności sprawiają, że wydaje się wynalezieniem tego języka na nowo. Szukasz wskazówek i pomocy? Zatem ta książka na pewno Ci się przyda. Gdy chodzi o język C++, Scott Meyers był i nadal jest synonimem dokładności, jakości i entuzjazmu'
Gerhard Kreuzer
Inżynier w dziale badań i rozwoju Siemens AG


                  'Wszystkim, którzy chcą zyskać jak najwięcej z nowoczesnego języka (zarówno najlepsze rozwiązania, jak i pułapki do uniknięcia), szczerze polecam nabycie tej książki, przeczytanie jej dokładnie i częste odwoływanie się do niej. Chociaż mam ponad dwudziestoletnie doświadczenie w języku C++, na pewno nauczyłem się z niej nowych rzeczy!'
Nevin Liber
Starszy inżynier oprogramowania, DRW Trading Group



        Tych recenzji jest więcej, ale myślę, że właśnie te oddają jej ducha  - wspaniały sposób pisania o rzeczach czasami bardzo trudnych w bardzo prosty sposób. To sztuka jaką posiadł autor - Scott Meyers, który dzięki swoim książkom zyskał światową sławę.

Dla kogo ten C++ podręcznik

         Zacznę od tego dla kogo ten podręcznik nie jest. Na pewno nie jest to podręcznik dla tych, którzy są na początku drogi poznania programowania w C++.
Programowanie w C++ i pełne wykorzystanie jego możliwości jest przedsięwzięciem tyleż ciekawym co niełatwym. Tak więc jest to podręcznik dla ambitnych, co najmniej  średnio zaawansowanych programistów w języku C++. Oczywiście dotyczy to wszystkich, którzy pracują również w starszej wersji - czyli C++98 i chcą poznać różnice miedzy tą wersją a najnowszą czyli C++11 i C++14.
Słowem, jeżeli chcecie Państwo poznać te najnowsze wersje i ich funkcjonalności a macie już doświadczenie w programowaniu w C++ - to ten podręcznik jest właśnie dla Was.


 Aby dobrze, w pełni poznać nowoczesny język C++11 i C++14 nie tylko wystarczy zaznajomić się z deklaracjami typu auto, wyrażeniami lambda, semantyką operacji przenoszenia czy obsługą współbieżności. Kluczem do sukcesu jest efektywne korzystanie z tych funkcjonalności w taki sposób, aby napisane przez Ciebie programy działały bezbłędnie, wydajne, były łatwe w utrzymaniu i dawały możliwość przenoszenia. Podręcznik ten w tym Ci pomoże.

   Książka została napisana w stylu wcześniejszych pozycji Scotta Meyersa, lecz zawiera najnowsze informacje odnośnie tworzenia aplikacji w nowoczesnym języku C++11 i C++14. Jest obowiązkową pozycją dla każdego programisty C++.



Pragniemy Państwa zapewnić, iż dokładamy wszelkich możliwych starań, by opisy książek i podręczników, zawarte na naszych stronach internetowych, zawierały bieżące i wiarygodne materiały. Może jednak, mimo naszych wysiłków, w opisy książek wkraść się przekłamanie z naszej strony niezamierzone. Nie może to stanowić powodu do roszczeń. O ile macie Państwo jakiekolwiek pytania lub wątpliwości - prosimy o kontakt z naszym ekspertem lub działem handlowym. Postaramy  się odpowiedzieć na wszystkie Państwa pytania zanim podejmiecie Państwo decyzje o złożeniu zamówienia.
#

Podziękowania . . .  ix

Wprowadzenie  . . . 1

Terminologia i konwencje  . . . 2

Raportowanie błędów i sugerowanie poprawek . . .  8


1. Dedukcja typów . . 9

Punkt 1: Dedukcja typów w szablonach . . .  9

Przypadek 1: ParamType to odwołanie lub wskaźnik, ale nie odwołanie uniwersalne . . .  11

Przypadek 2: ParamType jest odwołaniem uniwersalnym . . . 13

Przypadek 3: ParamType nie jest ani wskaźnikiem, ani odwołaniem . . .  14

Argumenty tablicowe . . . 16

Argumenty funkcyjne . . .  18

Punkt 2: Dedukcja typu auto . . .  20

Punkt 3: decltype . . . 26

Punkt 4: Jak wyświetlać wydedukowane typy . . .  34

Edytory IDE . . . 34

Diagnostyka kompilatora . . . 34

Wyniki czasu wykonania . . . 35


2. auto . . . 41

Punkt 5: Preferuj deklarację auto zamiast jawnych deklaracji typów . . . 41

Punkt 6: Stosuj idiom jawnego inicjatora typu, gdy deklaracja auto powoduje dedukcję niepożądanych typów . . .  48


3. Droga do nowoczesnego języka C++ . . .  55

Punkt 7: Rozróżniaj między () a {} podczas tworzenia obiektów .. . . 55

Punkt 8: Preferuj nullptr zamiast 0 i NULL .. . .  67

Punkt 9: Preferuj deklaracje aliasów zamiast typedef . . . 72

Punkt 10: Preferuj wyliczenia enum z zasięgiem zamiast bez zasięgu .. . .  77

Punkt 11: Preferuj funkcje usunięte zamiast prywatnych niezdefiniowanych 85

Punkt 12: Deklaruj funkcje nadpisujące jako override . . . 91

Punkt 13: Preferuj iteratory const_iterator zamiast iterator . . . 99

Punkt 14: Deklaruj funkcje jako noexcept, jeśli nie zgłaszają wyjątków . . . 104

Punkt 15: Stosuj constexpr, kiedy to tylko możliwe . . .  112

Punkt 16: Dbaj o bezpieczeństwo wątkowe funkcji składowych const . 120

Punkt 17: Generowanie specjalnych funkcji składowych . . .  127


4. Wskaźniki inteligentne . . .  137

Punkt 18: Stosuj wskaźniki std::unique_ptr do zarządzania zasobami posiadanymi wyłącznie . . . 139

Punkt 19: Stosuj wskaźniki std::shared_ptr w przypadku zarządzania zasobami o współdzielonym posiadaniu .. . .  146

Punkt 20: Stosuj typ std::weak_ptr dla wskaźników przypominających std::shared_ptr, które mogą zawisnąć .. . .  157

Punkt 21: Preferuj funkcje std::make_unique i std::make_shared zamiast bezpośredniego używania instrukcji new . . . . 163

Punkt 22: Podczas używania idiomu Pimpl definiuj specjalne funkcje składowe w pliku implementacji . . . 173


5. Odwołania do r‑wartości, semantyka przenoszenia i przekazywanie doskonałe . . .  185

Punkt 23: std::move i std::forward . . . . 186

Punkt 24: Odróżniaj odwołania uniwersalne od odwołań do r‑wartości . . . . 193

Punkt 25: Stosuj std::move w przypadku odwołań do r‑wartości, a std::forward w przypadku odwołań uniwersalnych . . . 199

Punkt 26: Unikaj przeciążania w przypadku odwołań uniwersalnych . . . 209

Punkt 27: Zapoznaj się z alternatywami przeciążania odwołań uniwersalnych .. . .  217

Rezygnacja z przeciążania .. . .  218

Przekazywanie przez const T& . . . 218

Przekazywanie przez wartość .. . .  218

Technika tag dispatch . . . 219

Ograniczanie szablonów przyjmujących odwołania uniwersalne . 223

Kompromisy .. . .  231

Punkt 28: Zwijanie odwołań . . . 233

Punkt 29: Załóż, że operacje przenoszenia nie są ani obecne, ani tanie, ani używane . . .  241

Punkt 30: Zapoznaj się z przypadkami niepowodzeń przenoszenia doskonałego . . .  245

Inicjatory klamrowe . . .  247

0 lub NULL jako wskaźniki null . . . 249

Sama deklaracja całkowitoliczbowych danych składowych o kwalifikatorach static const . . . 249

Przeciążone nazwy funkcji i nazwy szablonów . . . 251

Pola bitowe .. . .  253

Podsumowanie .. . .  255


6. Wyrażenia lambda . .  . 257

Punkt 31: Unikaj domyślnych trybów przechwytywania . . . 259

Punkt 32: Stosuj przechwytywanie inicjujące do przenoszenia obiektów do domknięć . . .  268

Punkt 33: Stosuj decltype do parametrów auto&&, aby je przekazywać za pomocą std::forward . . .  275

Punkt 34: Preferuj wyrażenia lambda zamiast std::bind . . . 278


7. Interfejs API współbieżności . .  . 289

Punkt 35: Preferuj programowanie oparte na zadaniach zamiast opartego na wątkach . . .  289

Punkt 36: Określ zasadę std::launch::async, jeśli asynchoniczność jest istotna . . . 294

Punkt 37: Doprowadź wątki std::thread do stanu nieprzyłączalnego na wszystkich ścieżkach . . . 300

Punkt 38: Uważaj na różnorodne działanie destruktorów uchwytów wątków . . . 309

Punkt 39: Rozważ obiekty future typu void do komunikacji zdarzeń jednorazowych 314

Punkt 40: Stosuj std::atomic dla współbieżności, a volatile dla pamięci specjalnej . 325


8. Szlify . . . 335

Punkt 41: Rozważ przekazywanie przez wartość parametrów, które można kopiować i tanio przenosić – o ile są zawsze kopiowane . . . 335

Punkt 42: Rozważ umieszczanie zamiast wstawiania . . . 348

Indeks . . . 367

 

powrót
 
Produkty Podobne
C++. Podróż po języku dla zaawansowanych. Wydanie II
Język C++. Owoce programowania. Wydanie IX
Nowoczesny C++.  Zbiór praktycznych zadań dla przyszłych ekspertów
C++. Struktury danych i algorytmy
C++17 STL. Receptury
Programowanie wieloplatformowe z C++ i wxWidgets 3
Czysty kod w C++17. Oprogramowanie łatwe w utrzymaniu
Game Programming in C++: Creating 3D Games
OpenCV 3. Komputerowe rozpoznawanie obrazu w C++ przy użyciu biblioteki OpenCV
Opus magnum C++11. Programowanie w języku C++ (komplet)
Więcej produktów