C++ - sztuczki i niebezpieczeństwa

Poniżej trochę różnego rodzaju sugestii-notatek związanych z programowaniem w C++.

Czytaj warningi czyli o obiektach tymczasowych
Warto czytać ostrzeżenia wypisywane przez kompilator. Inaczej nasze zmienne mogą nie chcieć się zmieniać...
Zmora zależności
Warto unikać niepotrzebnego dołączania plików nagłówkowych.
Ostrożnie z nazwami
Kilka słów na temat konfliktów nazw.
Używaj funkcji inline i stałych a nie makr
Funkcja inline jest równie wydajna jak makro ale bezpieczniejsza.
Korzystaj z STL
Zachęta do używania STL.
Jak opróżnić ostringstream
Sposób na 'wyzerowanie' obiektu ostringstream.
Z wydajnością biblioteki standardowej C++ bywa różnie
Nie wszystkie implementacje biblioteki standardowej C++ są wydajne.
Horror nazewniczy pod Windows
Microsoft definiuje setki makr, niekiedy o bardzo narzucających się nazwach.
Zawsze zapomnisz posprzątać, lepiej niech kompilator sprzątnie za Ciebie
Zachęta do wykorzystywania sprytnych wskaźników
Co ma wspólnego Oracle z numeric_limits
Pliki nagłówkowe Oracle definiują kilka bardzo dziwnych makr.
Ostrożnie z c_str na obiekcie tymczasowym
Metoda c_str zawołana na obiekcie tymczasowym zwraca wskaźnik do pamięci, ktora już po chwili może być używana do czego innego.
String i vector nie chcą oddać pamięci
Jak zmusić string lub vector, by zwrócił zaalokowaną pamięć.
Ryzykowne słowo exception
Zamiast exception lepiej pisać std::exception.
Rzutowanie typów całkowitych wymaga dyscypliny
Problemy przy rzutowaniu pomiędzy typami całkowitymi.
Uwaga z ciągami zapisów do strumienia
Polecenia zapisu do strumienia wykonuje się niekiedy w zupełnie innej kolejności, niż mogłoby się to wydawać.
Nie używaj funkcji isspace
Funkcja isspace zwraca czasem wartości bardzo nieoczekiwane.
Metody statyczne bywają mylące
Czasem trudno zauważyć, że używamy metody statycznej.
Microsoft + template + DLL = kłopoty
Microsoft+DLL+template=gwałt pamięci.
Jak odróżnić platformę kompilacji
O odróżnianiu platformy kompilacji
Strumienie w GCC nie lubią setw dla obiektów string
Problem z setw w GNU C++
Ostrożnie z konstruktorem std::string
string(0) może być niebezpieczny
Mądre przerzucanie wyjątków
Jak rzucić dalej złapany wyjątek.
Nie używaj unsigned jako indeksu string-a
string::size_type to nie musi być unsigned!
Ostrożnie z dodawaniem stringów
Ostrożnie z arytmetyką na const char *!
Kilka wartościowych książek
Kilka wartościowych choć trudnych książek o C++
Loteria typów
Kompilator może rzutować w sposób zupełnie dla nas nieoczekiwany.
Nie używaj wyjątków w destruktorze
Rzucenie wyjątku przez destruktor może nam sprawić sporo problemów.
Nie wpisuj znaku backspace do stringów
Znaki specjalne w stringu mogą wiele przed nami ukryć.
Ostrożnie z catch(...)
Ostrzeżenie przed wykorzystywaniem catch(...)

Nowości

Szachy na żywo

Dwa artykuły dotyczące gry w szachy na żywo: parę słów o turniejach dla amatorów oraz moja opinia jakie szachy warto sobie kupić do domu.

(2012-03-14)

Komentarze

Dodałem możliwość zostawiania komentarzy pod dłuższymi artykułami.

(2011-10-18)

Więcej