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 naFile0001 Należy pamiętać, że MUZYKOTERAPIA: jest dziedziną nauki, ponieważ swoje podstawy opiera na8 (745) 1. ALGEBRA MACIERZY1.1. Podstawowe działania na macierzach Macierzą nazywamy układ n-m elem1101245944 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* wektoraDSC56 1.3.2. Podstawowe działania na wektorach AGH c) Hwoleiii wektorów przez liczbę (skater): WyniDSC57 1.3.2. Podstawowe działania na wektorach ACHd) Iloczyn skalamy dwóch wektorów: I*DSC58DSC59 (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- siW tym rozdziale dowiemy się, jak pisać bezpieczny i wydajny kod zawierający działania na wskaźnikach167 KONWENCJE PISANIA MAKIiKonwencje pisania makr Ponieważ makra preprocesora działają na zasadzieUłamkowiec jest programem pozwalającym przeprowadzać cztery podstawowe działania na ułamkachDSC53 (4) lii A«H 1.3.2. Podstawowe działania na wektorach jeieii: h ={Pu.PiyA Pz = 0W^) Pn = {Pn*P213 2 określaniu wielkości dodatkowych sil działających na jednostki ładunkowe oraz na elementyALG 1 10.3. Podstawowe operacje na grafach 251 Jeśli umiemy dokonać domknięcia przechodniego grafu,więcej podobnych podstron