Być może, wydaje Ci się, że temat tego postu jest bardzo podstawowy i nie warto poświęcać na niego czasu. Częściowo jest to prawda - treść dotyczy podstaw języka C++ - jestem jednak pewien, że znajdziesz tu czytelniku rzeczy, które będą dla Ciebie zupełnie nowe, a także dowiesz się o wielu niezdefiniowanych zachowaniach. Zapraszam do lektury!... więcej
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
Jak zapewne wiecie, istnieją pewne mechanizmy w C++, które pozwalają na uzyskanie danych o typie obiektu w czasie życia programu. Być może zastanawiacie się po co są one w C++. Dzięki nim możemy np. obsługiwać wyjątki oraz implementować typy takie jak `std::any`. W tym artykule przyjrzymy się narzędziom dynamicznego rzutowania oraz uzyskiwania informacji o dynamicznym typie zmiennej.... więcej
Słowo kluczowe `inline` w języku C++ jest znane zapewne większości osób, które w co najmniej podstawowym stopniu opanowały ten język. Z mojej praktyki wynika jednak, że mniej doświadczonym osobom znane jest tylko jego jedno, i to mniej ważne zastosowanie.... 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