Podstrony
- Strona startowa
- Smith Lisa Jane Pamiętniki Wampirów 06 Dusze cieni (bez korekty)
- Olivia Cunning One Night with Sole Regret 06 Tell me
- S. D. Perry Resident Evil 06 Code Veronica
- Brooke Lauren Heartland 06 Kiedyś zrozumiesz
- Mara Dyer 02
- 3.Glen Cook Biala Roza
- Giovanni Boccaccio Dekameron tom 2
- Cussler Clive, Perry Thomas Przygoda Fargo 05 Piaty kodeks Majow
- Card Orson Scott Glizdawce (3)
- Penny Brandon The Looking Glass 1 Choices
- zanotowane.pl
- doc.pisz.pl
- pdf.pisz.pl
- plazow.keep.pl
[ Pobierz całość w formacie PDF ]
.Aby zadeklarować egzemplarze wzorca typu int i Cat parametryzowanej klasy Array,moglibyśmy napisać:Array anIntArray;Array aCatArray;Obiekt anIntArray to obiekt typu tablica liczb całkowitych; obiekt aCatArray to obiekt typutablica kotów.Od tego momentu możemy używać typu Array wszędzie tam, gdzienormalnie używalibyśmy jakiegoś typu (np.dla wartości zwracanej przez funkcję, jako parametrufunkcji i tak dalej).Pełną deklarację tej okrojonej klasy Array przedstawia listing 19.1.UWAGA Listing 19.1 nie jest kompletnym programem!Listing 19.1.Wzorzec klasy tablicy0: //Listing 19.1 Wzorzec klasy tablicy1: #include2: using namespace std;3: const int DefaultSize = 10;4:5: template // deklaruje wzorzec i parametr6: class Array // parametryzowana klasa7: {8: public:9: // konstruktory10: Array(int itsSize = DefaultSize);11: Array(const Array &rhs);12: ~Array() { delete [] pType; }13:14: // operatory15: Array& operator=(const Array&);16: T& operator[](int offSet) { return pType[offSet]; }17:18: // akcesory19: int getSize() { return itsSize; }20:21: private:22: T *pType;23: int itsSize;24: };WynikBrak.Program nie jest kompletny.AnalizaDefinicja wzorca rozpoczyna się w linii 5.od słowa kluczowego template, po którym występujeparametr.W tym przypadku parametr jest identyfikowany przez słowo kluczowe class, zaś doreprezentowania parametryzowanego typu został użyty identyfikator T.Od linii 6.aż do końca wzorca w linii 24., pozostała część deklaracji wygląda tak samo jakdeklaracja każdej innej klasy.Jedyną różnicą jest to, że tam, gdzie normalnie występowałby typobiektu, występuje identyfikator T.Na przykład, można oczekiwać, że operator[] będziezwracał referencję do obiektu zawartego w tablicy rzeczywiście, jest zadeklarowany jakozwracający referencję do T.Gdy deklarowany jest egzemplarz tablicy liczb całkowitych, to zdefiniowany dla tej tablicyoperator= zwróci referencję do liczby całkowitej.Gdy jest deklarowany egzemplarz tablicyobiektów klasy Animal, to zdefiniowany dla tej tablicy operator= zwróci referencję do obiektuAnimal.Użycie nazwySłowo Array może być użyte bez kwalifikowania wewnątrz deklaracji klasy.We wszystkichinnych miejscach programu do klasy tej trzeba się odwoływać jako do Array.Na przykład,jeśli nie wpiszemy konstruktora wewnątrz deklaracji klasy, to musimy napisać:templateArray::Array(int size):itsSize = size{pType = new T[size];for (int i = 0; i
[ Pobierz całość w formacie PDF ]