Szablon dla tlumaczy
2
Cz I ( Podstawy obsugi systemu WhizBang (Nagwek strony)
Rozdzia 16.Dziedziczenie zaawansowaneDo tej pory uywalimy dziedziczenia pojedynczego i wielokrotnego w celu stworzenia relacji typu jest-czym.
Z tego rozdziau dowiesz si: czym jest zawieranie i jak je modelowa, czym jest delegowanie i jak je modelowa, jak zaimplementowa dan klas poprzez inn, jak uywa dziedziczenia prywatnego.
Zawieranie
Jak pokazalimy w poprzednich przykadach, moliwe jest, by dane skadowe jednej klasy obejmoway obiekty innych klas. Programici C++ mwi wtedy, e klasa zewntrzna zawiera klas wewntrzn. Tak wic klasa Employee (pracownik) moe zawiera na przykad obiekt typu acucha (przechowujcy nazwisko pracownika) oraz skadowe cakowite (zawierajce jego pensj i inne dane).
Listing 16.1 opisuje niekompletn, jednak uyteczn klas String, do podobn do klasy String zadeklarowanej w rozdziale 13. Ten listing nie generuje adnego wydruku. Bdzie on jednak wykorzystywany razem z dalszymi listingami.
Listing 16.1. Klasa String 0: // Listing 16.1 Klasa String
1:
2: #include
3: #include
4: using namespace std;
5:
6: class String
7: {
8: public:
9: // konstruktory
10: String();
11: String(const char *const);
12: String(const String &);
13: ~String();
14:
15: // przecione operatory
16: char & operator[](int offset);
17: char operator[](int offset) const;
18: String operator+(const String&);
19: void operator+=(const String&);
20: String & operator= (const String &),
21:
22: // oglne akcesory
23: int GetLen()const { return itsLen; }
24: const char * GetString() const { return itsString; }
25: static int ConstructorCount;
26:
27: private:
28: String (int); // prywatny konstruktor
29: char * itsString;
30: unsigned short itsLen;
31:
32: };
33:
34: // domylny konstruktor tworzcy cig pusty (0 bajtw) 35: String::String()
36: {
37: itsString = new char[1];
38: itsString[0] = '\0';
39: itsLen=0;
40: // cout
Top Related