Późna inicjalizacja to wzorzec projektowy wykorzystywany w praktycznie każdym języku. Jego zaletą jest przesunięcie w czasie konstrukcji jakiegoś obiektu, która jest w jakiś sposób kosztowna, lub jej całkowite uniknięcie, jeżeli akurat tak się złoży, że dany obiekt w ogóle nie będzie potrzebny. Spójrzmy jak zaimplementować ten wzorzec poprawnie w C++.... więcej
W ostatnim artykule dotyczącym kategorii typów powiedzieliśmy sobie o podziale wyrażeń, oraz o tym, czym są kategorie wartości. Nie wspomnieliśmy jednak, co się dzieje, kiedy wyrażenie danej kategorii pojawi się w miejscu gdzie oczekiwane jest wyrażenie innej kategorii. Ten artykuł ma na celu wyjaśnienie właśnie zasad konwersji wyrażeń oraz tego, jakie operacje program musi przeprowadzić, aby te konwersje mogły się odbyć.... więcej
Prawdopodobnie słyszałeś o lvalue oraz rvalue. W czasach panowania C oraz C++ (przed standardem C++ 11) były one dość łatwe do rozróżnienia - lvalue, to były te wyrażenia, które mogły znajdować się po lewej stronie przypisania, a rvalue to cała reszta. Od C++11 podział na wyrażenia stał się nieco bardziej skomplikowany. Poza znanymi l- i r-value mamy także gl-, x- oraz p-rvalue. W tym poście, chciałbym się przyjrzeć temu podziałowi nieco bardziej.... więcej
Wyrażenia lambda są jednym z najpotężniejszych dodatków do C++11, które w dodatku ewoluują z każdą nową wersją Standardu C++. W tym wpisie przejdziemy przez ich historę, pokazując kluczową funkcję nowoczesnego C++.... więcej
Niestety, bardzo często język C++ jest obwiniany przez programistów o to, że pisząc w nim, łatwo o wycieki pamięci. Wiele osób nie zdaje sobie sprawy, że mówią o C++ sprzed... ponad 7 lat! Dzisiaj dowiemy się, dlaczego nie jest tak łatwo walczyć z wyciekami pamięci używając zwykłych wskaźników oraz co nowego w tym temacie oferuje nam standard C++11.... więcej
C++11 wprowadził wiele funkcji, bez których nie wyobrażamy sobie pisania nowoczesnego kodu. Należą do nich na przykład move semantics, lambda czy smart pointery. Są też ficzery, z których korzysta się raczej rzadko, ale warto je znać i wiedzieć co potrafią. Jednym z takich dodatków jest słowo kluczowe thread_local.... więcej