Programování v C++

Opravy, poznámky a doplňky k I. vydání skripta (tisk z r. 1998 a 1999)


V tomto přehledu neuvádím překlepy, která nemohou narušit smysl textu.
Skriptum bylo vytištěno poprvé v roce 1998, následoval dotisk v r. 1999; v něm byla některá nedopatření odstraněna. Hvězdičky ve sloupcích 98, 99 naznačují, ve kterých tiscích se lze s uvedenou chybou setkat. Jestliže je v uvedeném řádku hvězdička ve sloupci 98 a není ve sloupci 99, znamená to, že chyba se vyskytovala v exemplářích vytištěných v r. 1998 a byla odstraněna v emplářích vytištěných v r. 1999.

Poznámky a opravy k 2. vydání Poznámky a opravy k 3. vydání

Strana Řádek Je Má být 9899
318. shora ...není jeho prostou podmnožinou. ...není jeho prostou nadmnožinou. * 
1420. shora #ifndef __KOMPLRX_H__ #ifndef __KOMPLEX_H__ * 
1920. shora : re(_re), im(0) : re(_re), im(_im) * 
238. zdola #include "fah.h" #include "fak.h" * 
2616. zdola   (Chybí řádek)
#include "napis.h"
* 
279. zdola ... jediný parametr p ... jediný parametr x * 
278. zdola ... [] za identifikátorem p ... [] za identifikátorem x * 
3419. shora complec operator*(complex c); complex operator*(complex c); * 
3515. zdola ... operátorové funkce na výpisu 2.3... ... operátorové funkce na výpisu 2.10... * 
4414.-24. zdola (Výpis metodyvlozNaKonec()) (Metoda nevrací adresu nového prvku, jak slibuje komentář, ale adresu zarážky seznamu.) * 
4520. zdola ... vidíte na výpisu 3.6... ... vidíte na výpisu 3.16... * 
452. a 3. zdola :? ?: * 
461. a 2. shora ...mezi znaky : a ?, jinak je výsledek roven výrazu za otazníkem. ...mezi znaky ? a :, jinak je výsledek roven výrazu za dvojtečkou. * 
5226. zdola /* ...stejné jako na výpisu 3.5 ...*/ /* ...stejné jako na výpisu 3.15 ...*/ * 
6413. zdola // i je v lokální bloku... // j je lokální v bloku... **
691. zdola Podrobněji viz oddíl 6.4. Podrobněji viz oddíl 6.6. * 
893. zdola Obr. 8.1 Pole Mat[4][4] Obr. 8.2 Pole Mat[4][3] * 
9415. zdola Chceme např. alokovat matici typu int se 3 řádky a 4 sloupci. Nejprve tedy deklarujeme typ radek jako pole se 4 prvky... Chceme např. alokovat matici typu int se 4 řádky a 3 sloupci. Nejprve tedy deklarujeme typ radek jako pole se 3 prvky... * 
946. zdola int (*Mat)[3] = new radek[4]; int (*Mat)[3] = new int[4][3]; * 
976. shora Pokud užijeme delete na proměnnou... Pokud užijeme delete na ukazatel... **
1019. zdola void f(char c*); void f(char *c); * 
110obrázek   (Svorka vyznačující velikost segmentu je příliš veliká, má označovat pouze rozsah mezi dvěma silnějšími čarami ve schématu naznačujícím paměť.) **
11410. zdola ale ale všechny hodnoty nejmenšího bitového pole, do kterého lze uložit hodnoty všech výčtových konstant. Na PC to znamená **
1147. a 9. zdola 2N větší nebo rovné 2N větší než **
12714. zdola * ( postfixový_výraz ) . identifikátor (* postfixový_výraz ) . identifikátor **
13218. shora void (X::UF) = &X::f; void (X::UF)() = &X::f; **
14818. shora a) označení char, ... (ve výčtu chybí bool) **
16212. zdola Jazyk C++ požaduje, abychom při volání funkce vždy uvedli všechny parametry. (Tato věta je formulováma poněkud nešťastně, a proto vyžaduje podrobnější vysvětlení.
Překladač jazyka C nemusí při překladu volání funkce znát její prototyp. Pokud ho nezná, nemusíme uvést všechny parametry — je na nás, abychom věděli, že se nepředané parametry opravdu nepoužijí.
Na druhé straně překladač jazyka C++ znalost prototypu vyžaduje a parametry musíme uvést všechny — s výjimkou případu, kdy se použijí jejich implicitní hodnoty. (Překladač si za neuvedené parametry doplní jejich implicitní hodnoty.) To ale znamená, že se funkce zavolá vždy se stejným počtem parametrů, jako je v definici — buď je vypíšeme sami, nebo si je doplní překladač.)
**
1663. shora Modifikátor inline vždy znamená interní linkování.. (To platilo ve starších překladačích. V ISO C++ modifikátor inline nevyjadřuje způsob linkování.) **
1999. shora modifikátor: jeden z
inline explicit
modifikátor:
inline explicit
**
20923. shora jako chráněného (private), jako chráněného (protected), * 
22322. zdola Operátory :?, :: ... Operátory ?:, :: ... * 
24217. shora template< ...> deklarace; template< ...> deklarace
(bez středníku na konci)
**
24217. zdola Za deklarací šablony musí být středník. Deklarace šablony musí být ukončena středníkem (pokud nejde o definiční deklaraci šablony metody objektového typu nebo funkce). **
24519. shora Její šablona musí... Šablona statického atributu musí... * 
24523. shora Tato inicializace znamená implicitní hodnotu, kterou můžeme v explicitní deklaraci přepsat. (To platilo v návrhu standardu, dnes se ke změně hodnoty pro konkrétní hodnoty parametrů používá explicitní specializace — viz následující opravu.) **
24515. zdola int matice<int,3>::pocet_matic=6; (Takhle se to dělalo v době vzniku skripta; podle standardu ale musíme napsat:)
template<> int matice<int,3>::pocet_matic=6;
(Dnešní překladače ovšem starší zápis také akceptují.)
**
24620. zdola I když se šablony ... dosud neimplementuje. (To už neplatí, nejnovější překladače je implementují.) **
2471. shora ptr<t>::operator ptr<R>() ptr<T>::operator ptr<R>() **
25016. shora ...C++ nabízí tzv. specializaci šablon,... ...C++ nabízí tzv. parciální specializaci šablon,... **
25113. shora Podobně lze specializovat také šablony funkcí. (Nelze, to ISO C++ nedovoluje.) **
25319. zdola Obyčejné funkce smějí mít... Šablony obyčejných funkcí smějí mít... * 
26119. zdola ...uvést před handlerem, jehož parametr je typu potomek. ...uvést za handlerem, jehož parametr je typu potomek. **
28513. zdola Tím hodnotu x prostě zahodíme. Tím hodnotu v prostě zahodíme. **
2856. zdola Může konvertovat potomka na nevirtuálního předka, ... Může konvertovat předka na nevirtuálního potomka, ... * 
2853. zdola výraz x ukazuje... výraz v ukazuje... **
28720. zdola ... i přetypování na virtuálního předka... ... i přetypování na virtuálního potomka... **
28825. zdola ... jako jediného veřejně přístupného předka... ... jako jednoznačného veřejně přístupného předka... **
28825. zdola ... i o přetypování na virtuálního předka... ... i přetypování na virtuálního potomka... **
2903. shora ... v přetypování const_cast<Y>(v)... ... v přetypování const_cast<T>(v)... **
29315. zdola ...neboť nezná proměnnou Alfa::a. neboť nezná proměnnou Alfa::b. **
30417. shora (tab. 20.3) (tab. 20.4) * 
30923. zdola ...přečte ze vstupního proudu nejvýše i znaků... ...přečte ze vstupního proudu nejvýše i-1 znaků... **
3097. zdola ...přeskočí i znaků... ...přeskočí n znaků... **
31718. shora parametr typu iosbase::fmtflags parametr typu ios_base::fmtflags **
3283. zdola P Ukazatel p Ukazatel
(má být malé p)
* 
3361. nad tab. fnctl.h fcntl.h * 
33723. zdola #include <fnctl.h> #include <fcntl.h> * 
341pod obrázkem Obr. 20.3 Obr. 20.23 * 
3464. shora hovořili jsme o nich v 8. hovořili jsme o nich v 14.2. **
3503. zdola Pro přidávání prvků na počátek nebo na konec pole máme metody push_back() a pop_back(). Pro přidávání prvků na počátek nebo na konec pole máme metody push_front() a push_back()..

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