LINUXSOFT.cz
Nazwa użytkownika: Hasło:     
    CZ UK PL

> Komentarze :: článek C++ šablony

Chybka 2.2.2011 13:48
Jaroslav Šmíd

Ve vaší třídě Stack máte (zřejmě nechtěnou) "chybku". Velikost pole máte určenu prvkem typu int. Standard pro tento účel definuje size_t, resp. size_t je typ vracený operátorem sizeof a maximální velikost alokovatelného objektu na daném systému se musí vejít do rozsahu typu size_t. size_t je neznaménková celočíselná hodnota.
Standard nikde nedefinuje, že sizeof(int) == sizeof(size_t) a je dovoleno, aby platilo sizeof(int) <= sizeof(size_t) či sizeof(int) >= sizeof(size_t). Z toho důvodu "nevíte", jestli zbytečně neomezujete uživatele dané třídy malým rozsahem typu int (a ještě k tomu "dovolujete" záporné velikosti), nebo naopak mu dáváte možnost alokovat něco, co na daném systému alokovat nelze. Používat typ int místo size_t je špatný zvyk různých java, C#, ... programátorů. Ale alespoň, že nikde nepřetypováváte vector<T>::size_type na int, což některá prasata taky ráda dělávají a to ještě bez toho, aniž by zkontrolovali výsledek přetypování, jestli má stejnou hodnotu.

Re: Chybka 2.2.2011 15:37
Petr Sklenička

Máte pravdu. Když to budeme brát opravdu do hloubky, chybka to je, přiznávám. V jistých případech to skutečně může způsobit problém. Nakonec si ale přeci jen neodpustím takovou "obligátní" výmluvu, že článek se točí kolem šablon, ne kolem zásobníku, který měl posloužit pouze jako příklad. I tak ale díky za upozornění, protože to opravdu chyba (ač v tomto případě zcela nepodstatná) je.


KOMENTARZE
Chybka 2.2.2011 13:48 Jaroslav Šmíd
  L Re: Chybka 2.2.2011 15:37 Petr Sklenička
Tylko zarejestrowani użytkownicy mogą dopisywać komentarze.
> Szukanie oprogramowania
1. Pacman linux
Download: 4850x
2. FreeBSD
Download: 9044x
3. PCLinuxOS-2010
Download: 8541x
4. alcolix
Download: 10915x
5. Onebase Linux
Download: 9631x
6. Novell Linux Desktop
Download: 0x
7. KateOS
Download: 6219x

1. xinetd
Download: 2382x
2. RDGS
Download: 937x
3. spkg
Download: 4692x
4. LinPacker
Download: 9918x
5. VFU File Manager
Download: 3173x
6. LeftHand Mała Księgowość
Download: 7171x
7. MISU pyFotoResize
Download: 2775x
8. Lefthand CRM
Download: 3540x
9. MetadataExtractor
Download: 0x
10. RCP100
Download: 3089x
11. Predaj softveru
Download: 0x
12. MSH Free Autoresponder
Download: 0x
©Pavel Kysilka - 2003-2024 | mailatlinuxsoft.cz | Design: www.megadesign.cz