C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

Specyfikator final.

W poprzednim wpisie z serii C++11 opisałem specyfikator override. Niejako w parze z nim występuje specyfikator final, który również odnosi się do przeciążania funkcji wirtualnych w klasach pochodnych.

Mówiąc krótko: jeśli nie chcemy, żeby funkcja wirtualna była dalej przeciążana (w kolejnych klasach pochodnych w hierarchii), możemy użyć słowa final w deklaracji funkcji – dokładnie tak samo, jak wykorzystujemy override.

(więcej…)

C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

C++11 #7: Przeciążanie funkcji wirtualnych: specyfikator override.

Do każdego aspektu języka, z którego korzystamy, możemy mieć mniejsze lub większe uwagi. Oczywiście również posiadam swoją subiektywną listę niedociągnięć, jeśli chodzi o język C++.

Pomimo tego, że bardzo docieniam polimorfizm i sposób zaimplementowania tego mechanizmu, za niedopracowane uważam kwestie związane z dziedziczeniem i wykorzystaniem funkcji wirtualnych w C++.

(więcej…)

Python3Tutorial #1: Dlaczego Python 3 ?

Python3Tutorial #1: Dlaczego Python 3 ?

No właśnie… Dlaczego ?

Z Pythonem w wersji trzeciej zetknąłem się jakieś 3-4 lata temu. Potrzebowałem narzędzia, które w szybki sposób będę mógł zmusić do skutecznego przetwarzania dużej ilości danych tekstowych. Wybór okazał się trafny, ponieważ już w ciągu kilku dni zacząłem pisać dość nietrywialne skrypty, korzystające intensywnie z biblioteki standardowej Pythona.

(więcej…)

C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

C++11 #6: Silne typy wyliczeniowe.

Większość programistów języka C++ zna doskonale typy wyliczeniowe (enum), zdefiniowane w standardzie C++98/03. Jest to wygodne, często wykorzystywane narzędzie. Jest to jednak również funkcjonalność, która posiada kilka zauważalnych niedociągnięć, przez co użycie typów wyliczeniowych nie jest tak przyjemne i odporne na błędy, jak mogłoby być.

W standardzie C++11 doczekaliśmy się pod tym względem malutkiej rewolucji – zdefiniowane zostały tzw. silne typy wyliczeniowe (ang. strongly-typed enums).

(więcej…)

C++11 #8: Przeciążanie funkcji wirtualnych: specyfikator final.

C++11 #5: Nawiasy kątowe a argumenty szablonów.

Dzisiejszy temat dotyczy jednego z najbardziej zdumiewających problemów poprzednich standarów języka C++. Dlaczego zdumiewających ? Między innymi dlatego, że udało mu się przetrwać dzielnie kilkanaście lat (!), pomimo swojej nieskomplikowanej natury – chodzi o podwójne nawiasy kątowe.

Ale jak to się stało ?

Spójrzmy na poniższy kod:

(więcej…)

Qt Tutorial #5: System zasobów biblioteki Qt.

Qt Tutorial #5: System zasobów biblioteki Qt.

System zasobów biblioteki Qt.

W przypadku prawie każdego programu zachodzi potrzeba dostarczenia, wraz z plikiem wykonywalnym, dodatkowych zasobów.

Dobrym przykładem są obrazy wykorzystywane w graficznym interfejsie użytkownika. Możemy oczywiście dostarczać obrazy jako część instalatora, który rozpakuje je podczas instalacji do katalogu aplikacji. Ma to jednak swoje wady: jest dość uciążliwe i może nie wyglądać profesjonalnie.

(więcej…)