Pasti a propasti jazyka C++

Opravy, poznámky a doplňky k druhému vydání z r. 2005


Do druhého vydání jsem doplnil kapitoly o šablonách, prostorech jmen, objektově orientovaném návrhu a o používání národního prostředí v C++. Vypustil jsem části, kteríé se týkaly programování pro DOS a doplnil řadu nových pastí a pastiček, na něž jsem od dokončení prvního vydání narazil.
Poznámky a opravy k 1. vydání

Strana Řádek Je Má být
25nahoře Dříve či později si ale všimneme, že tato funkce vrací pro každé n hodnotu 0. Dříve či později si ale všimneme, že tato funkce vrací pro každé n hodnotu 1.
297. ř. zdola max = a[j]; max = pole[j];
294. ř. zdola do min se přiřadí do max se přiřadí
Aby zmatků nebylo dost, kód ve skutečnosti počítá minimum, ale to zde není vůbec podstatné -- důležitý je ten nadbytečný středník.
5513. zdola c = (char*)malloc(strlen("Nějaký řetězec"+1)); c = (char*)malloc(strlen("Nějaký řetězec")+1);
5620. ř. zdola cout << VytvorText(15); cout << VytvorText(15, 25);
65po celé stránce První Prvni)
(Word byl zase jednou chytřejší než já...)
6714. ř. zdola char c[20]; char c[200];
683. ř. zdola char c = va_arg(ap, float); float c = va_arg(ap, float);
8217. ř. zdola cin.getline(c, 99);// Čte maximálně 1 000 znaků cin.getline(c, 100);// Čte maximálně 99 znaků
(metoda getline() očekává délku pole a čte max. o jeden znak méně kvůli ukončovací nule
9810. ř. zdola platit i == -32767. platit i == -32768
9914. ř. zdola if(n == 0)*c++='0'; if(n == 0){*c++='0'; *c = 0;}
(Chybělo přidání nuly ukončující řetězec.)
1088. ř. zdola s = a s - a
(Překlep v Heronově vzorci)
13518. ř. zdola ~String(){delete s;} ~String(){delete[] s;}
(Původní verze bude na velké většině překladačů fungovat strávně, protože s ukazuje na pole základního, nikoli objektového typu.)

Na začátek stránky   Moje domovská stránka   Seznam publikací   Poznámky