Ostrożność przy wybieraniu typów ze znakiem lub bez znaku................ 41
Ostrożność przy łączeniu liczb ze znakiem i liczb bez znaku................. 41
Nawiasy tam, gdzie są potrzebne......................................... 42
Sprawdzanie argumentów............................................... 43
Traktowanie ostrzeżeń zawsze jako błędów ............................... 44
Używanie zawsze co najmniej trzeciego poziomu ostrzeżeń ................. 45
Odwrotny ukośnik (\) w napisach ........................................ 45
Ostrożność przy łączeniu C i C++........................................ 46
Sprawdzanie, czy stała jest już zdefiniowana............................... 46
Bycie świadomym tego, co robią funkcje (przynajmniej te,
których się używa)............................................... 47
Gwarantowanie, że napisy są zakończone znakiem pustym .................. 48
Sprawdzanie rzeczywistego rozmiaru..................................... 49
Funkcjebezpośredniezamiastmakropoleceń .............................. 50
3 Kod generowany przez kompilator..................................... 53
Konstruktory i destruktory są tworzone automatycznie...................... 54
Izolowanie operacji new w celu zaoszczędzenia miejsca .................... 56
Przeciążanie operacji new wraz z przeciążaniem operacji delete ............. 57
Operator dodawania wprowadza duży narzut .............................. 58
4 Wskaźniki i pamięć ................................................... 61
Sprawdzanie, czy pamięć przydzielono pomyślnie.......................... 62
Zwalnianie pamięci tylko raz............................................ 62
Sprawdzanie przed zamianą, czy można przydzielić pamięć ................. 63
Przygotowywanie się na wielokrotne wywołania metod alokacji buforów ..... 64
Niezwracanie wskaźników do zmiennych automatycznych .................. 65
Inicjalizowanie zmiennych do zawsze znanego stanu ....................... 66
Unikanie kopii wskazujących na siebie ................................... 67
Używanie deklaracji const * ............................................ 68
Unikanie błędów podczas użycia deklaracji const.......................... 68
Inteligentne wskaźniki.................................................. 69
Inteligentne wskaźniki do obiektów ...................................... 70
Własne alokatory pamięci i inteligentne wskaźniki ......................... 71
Dbanie o rozmiar buforów .............................................. 71
Tworzenie menedżera pamięci wykrywającego straty....................... 72
Globalne i lokalne alokatory pamięci ..................................... 72
5 Tablice............................................................... 73
Polecenia delete (] w tablicach.......................................... 74
Unikanie za małych indeksów ........................................... 74
Unikanie za dużych indeksów ........................................... 75
coś[K] oznacza to samo, co coś .operator! ] (K) ............................ 76
Tablica jest wskaźnikiem ............................................... 77