145 TIF

145 TIF



private:

BYTE* m_pbMtabl; public:

void * PvDołącz(void * pv, long lcElem=1); void * PvPrzy(long lindeks) const;

};

template <class T> dass Drg : private bazaDrg

{

private: int m_it; public:

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

{

}

Drg(const Drg<T> &drg): bazaDrg(drg)

{

m_it = drg.m_it;

}

T &operator*(void) const

{

return *(T *)PvPrzy(m_it);

}

T *Dołącz(const T &t)

{

return (T *)PvDołącz((void *)&t);

}

};

Gdy używamy szablonów, wówczas każdy egzemplarz klasy utworzony z szablonu zawiera cały kod z deklaracji szablonu. Załóżmy na przykład, że tworzymy klasy Drg<char>, Drg<int> oraz Drg<coś>. Zgodnie z fragmentem „Przed” każda z trzech implementacji zawierałaby kopię funkcji PvDołącz, PvPrzy i innych funkcji pomocniczych. Oczywiście każda z tych funkcji byłaby dostosowana do konkretnego typu danych.

We fragmencie „Po” widzimy, że utworzyliśmy klasę podstawową o nazwie bazaDrg. Zawarliśmy w niej zestaw funkcji pomocniczych działających na wskaźnikach do void (void *). Klasa powstała z szablonu dziedziczy te funkcje, a bezpieczny i zgodny z typem dostęp do nich jest realizowany przez publiczne funkcje składowe. W przeciwieństwie do fragmentu „Przed” każda nowa konkretyzacja szablonu we fragmencie „Po” nie powoduje powtórzenia wszystkich funkcji pomocniczych. Każda


Wyszukiwarka

Podobne podstrony:
Po class Uwaga { private: int m_nLicznik; public: Uwaga(void) : m_nLicznik(1){} void UstawLicznik(in
133 TIF class C3 : public C1{ public: void Metoda3();}; class C4 : public C3, public C2{}; void
class Punkt{ private int x, y; public void Przesuń(int dx, int dy){ x += dx; y += dy;} public Punkt(
133 TIF class C3 : public C1{ public: void Metoda3();}; class C4 : public C3, public C2{}; void
Odtworzenie diagramu klas na podstawie C++ cla Klasal private: long Pole2; double Pole2; public: voi
—    Następnie należy utworzyć metodę inicjalizującą applet: public void initO
OpenGL/src/org/umk/opengl/RendererGL.jaya public void onSurfaceCreated(GL10 gl, EGLConfig konfig) {
OpenGL/src/org/umk/opengl/RendererGL.jaya public void onSurfaceChanged(GL10 gl, int szerokość, int
dr inż. Piotr Matka PROGRAMOWANIE JAVA 11 public void destroy()ii Szkielet apletu korzystający z kla
dr inż. Piotr Matka PROGRAMOWANIE JAVA 13 class MyWindowAdapter extends WindowAdapteri public void

więcej podobnych podstron