r10-06.doc

43
Rozdział 10. Funkcje zaawansowane W rozdziale 5., „Funkcje”, poznałeś podstawy pracy z funkcjami. Teraz, gdy wiesz także, jak działają wskaźniki i referencje, możesz zgłębić zagadnienia dotyczące funkcji. Z tego rozdziału dowiesz się, w jaki sposób: przeciążać funkcje składowe, przeciążać operatory, pisać funkcje, mając na celu tworzenie klas z dynamicznie alokowanymi zmiennymi. Przeciążone funkcje składowe Z rozdziału 5. dowiedziałeś się jak implementować polimorfizm funkcji, czyli ich przeciążanie, przez tworzenie dwóch lub więcej funkcji o tych samych nazwach, lecz innych parametrach. Funkcje składowe klas mogą być przeciążane w dokładnie ten sam sposób. Klasa Rectangle (prostokąt), zademonstrowana na listingu 10.1, posiada dwie funkcje DrawShape() (rysuj kształt). Pierwsza z nich, nie posiadająca parametrów, rysuje prostokąt na podstawie bieżących wartości składowych danego egzemplarza klasy. Druga funkcja otrzymuje dwie wartości (szerokość i długość) i rysuje na ich podstawie prostokąt, ignorując bieżące wartości zmiennych składowych.

Upload: greg

Post on 14-Sep-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

Szablon dla tlumaczy

2

Cz I ( Podstawy obsugi systemu WhizBang (Nagwek strony)

Rozdzia 10.Funkcje zaawansowane

W rozdziale 5., Funkcje, poznae podstawy pracy z funkcjami. Teraz, gdy wiesz take, jak dziaaj wskaniki i referencje, moesz zgbi zagadnienia dotyczce funkcji.

Z tego rozdziau dowiesz si, w jaki sposb:

przecia funkcje skadowe,

przecia operatory,

pisa funkcje, majc na celu tworzenie klas z dynamicznie alokowanymi zmiennymi.

Przecione funkcje skadowe

Z rozdziau 5. dowiedziae si jak implementowa polimorfizm funkcji, czyli ich przecianie, przez tworzenie dwch lub wicej funkcji o tych samych nazwach, lecz innych parametrach. Funkcje skadowe klas mog by przeciane w dokadnie ten sam sposb.

Klasa Rectangle (prostokt), zademonstrowana na listingu 10.1, posiada dwie funkcje DrawShape() (rysuj ksztat). Pierwsza z nich, nie posiadajca parametrw, rysuje prostokt na podstawie biecych wartoci skadowych danego egzemplarza klasy. Druga funkcja otrzymuje dwie wartoci (szeroko i dugo) i rysuje na ich podstawie prostokt, ignorujc biece wartoci zmiennych skadowych.

Listing 10.1. Przecione funkcje skadowe

0: //Listing 10.1 Przecianie funkcji skadowych klasy

1:

2: #include

3:

4: // Deklaracja klasy Rectangle

5: class Rectangle

6: {

7: public:

8: // konstruktory

9: Rectangle(int width, int height);

10: ~Rectangle(){}

11:

12: // przeciona funkcja skadowa klasy

13: void DrawShape() const;

14: void DrawShape(int aWidth, int aHeight) const;

15:

16: private:

17: int itsWidth;

18: int itsHeight;

19: };

20:

21: // implementacja konstruktora

22: Rectangle::Rectangle(int width, int height)

23: {

24: itsWidth = width;

25: itsHeight = height;

26: }

27:

28:

29: // Przeciona funkcja DrawShape - nie ma parametrw

30: // Rysuje ksztat w oparciu o biece wartoci zmiennych skadowych

31: void Rectangle::DrawShape() const

32: {

33: DrawShape( itsWidth, itsHeight);

34: }

35:

36:

37: // Przeciona funkcja DrawShape - z dwoma parametrami

38: // Rysuje ksztat w oparciu o podane wartoci

39: void Rectangle::DrawShape(int width, int height) const

40: {

41: for (int i = 0; i