Czy wiesz, że jesteśmy również na Slacku? Dołącz do nas już teraz klikając tutaj!

Zarządzanie zasobami w C++ #4 – referencje uniwersalne i std::forward


2021-03-01, 00:00
Zarządzanie zasobami w C++ #4 – referencje uniwersalne i std::forward

Język C++ nie był by sobą, gdyby nie szablony. Kiedy chcemy napisać jakiś szablon klasy lub funkcji, która manipuluje zasobem, chcielibyśmy dać jej użytkownikowi możliwość zdecydowania, czy zasób ten daje nam na wyłączność, czy musimy go sobie skopiować. To zadanie ułatwiać ma nam uniwersalna referencja, która jest domeną wyłącznie funkcji szablonowych.... więcej

Zarządzanie zasobami w C++ #3 – RVO, NRVO i obowiązkowe RVO w C++17


2020-02-20, 00:00
Zarządzanie zasobami w C++ #3 – RVO, NRVO i obowiązkowe RVO w C++17

W poprzednich dwóch częściach tego cyklu artykułów wyjaśniliśmy sobie rzeczy, które powinny być podstawą podczas pisania eleganckiego kodu w C++. W tej części przyjrzymy się bardziej niskopoziomowym aspektom języka związanym z zarządzaniem zasobami. Mogą być one jednak trudniejsze w zrozumieniu. Nie są jednak bardzo istotne z punktu widzenia programisty, dlatego nie polecam tego artykułu początkującym – mógłbym ich odstraszyć. Wszystkich innych zapraszam do lektury.... więcej

Zarządzanie zasobami w C++ #2 – semantyka przenoszenia (std::move)


2020-02-06, 00:00
Zarządzanie zasobami w C++ #2 – semantyka przenoszenia (std::move)

W drugiej części cyklu o zarządzaniu zasobami bierzemy na tapet konstrukcje, z którymi dość trudno było się oswoić programistom C++ po wprowadzeniu go do języka w 2011 roku – semantyką przenoszenia. Na początku pokażemy jednak, dlaczego zaistniała potrzeba jej wprowadzenia, poprzez objaśnienie wyraźnej luki w dotychczasowym standardzie C++. Po zrozumieniu tej potrzeby, na pewno łatwiej jest zrozumieć istotę „wynalazku”. @page { margin: 2cm } p { margin-bottom: 0.25cm; line-height: 115% } ... więcej

Zarządzanie zasobami w C++ #1 – RAII i wyjątki


2020-01-23, 00:00
Zarządzanie zasobami w C++ #1 – RAII i wyjątki

Podczas rozwoju różnych technologii proces ewolucji czasami jest na tyle duży, że mamy do czynienia z rewolucją. Z tego powodu C++ stał się odrębnym językiem w porównaniu do C. Często jest tak, że kod poprawny w C może być niepoprawny w C++. Najbardziej chyba rewolucyjną przemianą wprowadzoną do C++ są obszary zarządzania zasobami. Podejście znane z C może być nadal używane w C++, ale bądźmy szczerzy – jest to bardzo kiepski pomysł. Zobaczmy, jak dziś zarządzać zasobami w sposób poprawny i nowoczesny.... więcej

Maszyna Stanów oparta o std::variant na przykładzie gry


2019-10-09, 00:00
Maszyna Stanów oparta o std::variant na przykładzie gry

Jednym z potężniejszych wykorzystań std::variant niewątpliwie jest implementacja Maszyny Stanowej. Jakiś czas temu przygotowałem prosty przykład tego wzorca. Dzisiaj jednak mamy coś większego. W dzisiejszym wpisie przygotowanym przez Nikolai Wuttke zobaczycie, jak wykorzystać std::variant przy budowie gry kosmicznej!Poniższy wpis jest wpisem gościnnym autorstwa **Nikolai Wuttke**.... więcej

Obsługa błędów a std::optional


2019-01-24, 01:21
Obsługa błędów a std::optional

W moich poprzednich wpisach w serii C++ STL poruszyłem tematy związane z tym, jak używać std::optional. Ten opakowujący (nazywany również słownikowym) typ jest użyteczny zawsze wtedy, kiedy potrzebujemy wyrazić coś, co może nie posiadać stanu: coś co może być "puste". Na przykład możemy zwrócić std::nullopt aby poinformować, że że mamy do czynienia z błędem... ale czy aby na pewno to jest najlepszy wybór?... więcej

Pssst! Używamy Cookies. Poprzez używanie naszego serwisu zgadzasz się na odczytywanie i zapisywanie Cookies w swojej przeglądarce.
Polityka Prywatności