213 TIF

213 TIF



Ponieważ klasa podstawowa działa na wskaźnikach void, musi znać rozmiar, elementów przechowywanych w tablicy. Rozwiązuje to konstruktor klasy Drg, który przekazuje rozmiar wzorcowego typu:

Drg(): Drgbase(sizeof(T)), m_it(0)

{

}

Klasa podstawowa używa tego rozmiaru do obliczania wszystkich odwołań do tablicy i do zarządzania pamięcią. Na przykład podana metoda znajduje wartość dla podanego indeksu. Zauważmy, że oblicza indeks względny, mnożąc wartość indeksu przez rozmiar przechowywanych elementów.

void * Drgbase::PvAt(long lindex) const

{

void * pv;

if(!m_rgb)

return NULL;

pv = (void *)(m_rgb + (lindex * mJcbSize));

if(pv < (void *)m_pbMac) return pv;

return NULL;

}

Jak widać w metodach PvAppend i Pvlnsert, jeśli wstawianie wymaga powiększenia tablicy, wówczas jest wywoływana metoda FGrow. Przydziela ona i kopiuje pamięć, w celu dostosowania rozmiaru tablicy.

Oglądając zamieszczony kod rozpoznamy wiele technik omówionych w części I. Na przykład tworzymy konstruktory kopiowania i przeciążamy operator przypisania. W metodach tych kopiujemy pamięć, jak również wskaźniki. Dokonujemy też wielu sprawdzeń, aby upewnić się, że przydzielanie pamięci udaje się, a także przeciążamy wiele operatorów.

Pliki

Dalej został wydrukowany plik z kodem dla dynamicznych tablic, drg.h jest plikiem nagłówkowym, a drg.cpp jest plikiem kodu. Liczby w komentarzach oznaczają numery wskazówek z części I. Pliki te i odpowiadający im plik projektu Visual C++ można znaleźć w folderze exp na CD-ROM-ie dołączonym do książki.


Wyszukiwarka

Podobne podstrony:
File0001 Należy pamiętać, że MUZYKOTERAPIA: jest dziedziną nauki, ponieważ swoje podstawy opiera na
File0001 Należy pamiętać, że MUZYKOTERAPIA: jest dziedziną nauki, ponieważ swoje podstawy opiera na
8 (745) 1. ALGEBRA MACIERZY1.1. Podstawowe działania na macierzach Macierzą nazywamy układ n-m elem
1101245944 2.3,8. (Rys. 1-2.34). Wyznaczyć moment względem podstawy, działający na pionową płaską ś
DSC55 (3) 1*3.2. Podstawowa działania na wektorach ACM k) Odejmowanie wektorów: Odejmowani* wektora
DSC56 1.3.2. Podstawowe działania na wektorach AGH c) Hwoleiii wektorów przez liczbę (skater): Wyni
DSC57 1.3.2. Podstawowe działania na wektorach ACHd) Iloczyn skalamy dwóch wektorów: I*
DSC58
DSC59 (2) 1.3.2. Podstawowe działania na wektorach ib ACM #9oCayM b^®Raorowy owocn wwcrorow*
DSC60 (2) 1.3.2. Podstawowe działania na wektorach ACH c = a • b • sin(fl) f = axft c = ab- si
W tym rozdziale dowiemy się, jak pisać bezpieczny i wydajny kod zawierający działania na wskaźnikach
167 KONWENCJE PISANIA MAKIiKonwencje pisania makr Ponieważ makra preprocesora działają na zasadzie
Ułamkowiec jest programem pozwalającym przeprowadzać cztery podstawowe działania na ułamkach
DSC53 (4) lii A«H 1.3.2. Podstawowe działania na wektorach jeieii: h ={Pu.PiyA Pz = 0W^) Pn = {Pn*P
213 2 określaniu wielkości dodatkowych sil działających na jednostki ładunkowe oraz na elementy
ALG 1 10.3. Podstawowe operacje na grafach 251 Jeśli umiemy dokonać domknięcia przechodniego grafu,

więcej podobnych podstron