Poznaj C++ w$ godziny0255

Poznaj C++ w$ godziny0255



Dziedziczenie 247

Tak wygląda bezpośrednie wywołanie metody klasy Ssak. Listing 16.7 przybliża to zagadnienie.

Listing 16.7. Wywoływanie metody klasy bazowej z klasy z nadpisaną metodą

1:    //Listing 16.7 Wywołanie metody bazowej z nadpisanej

2:

3:    finclude <iostream.h>

4:

5:    class Ssak

6:    {

7:    public:

8:    void Ruch() const { cout « "Ssak przeszedł jeden krok\n"; }

9:    void Ruch(int    distance)    const

10:    { cout « "Ssak    przeszedł    "    « distance « " kroki.\n"; )

11:    protected:

12:    int jegoWiek;

13:    int jegoWaga;

14:    } ;

15:

16:    class Pies : public Ssak

17:    {

18:    public:

19:    void Ruch () const;

20:    ) ;

21:

22:    void Pies::Ruch() const

23:    {

24:    cout « "Ruch psa...\n";

25:    Ssak::Ruch(3);

26:    }

27:

28:    int main()

29:    {

30:    Ssak bigAnimal;

31:    Pies fido;

32:    bigAnimal.Ruch(2);

33:    fido.Ssak::Ruch(4);

34:    return 0;

35:    }

EFEKT DZIAŁANIA:

Ssak przeszedł 2 kroki. Ssak przeszedł 4 kroki.

ANALIZA:


W linii 30 jest tworzony obiekt klasy Ssak o nazwie duzeZwierze i Fido klasy Pies. W linii 32 wywołujemy metodę Ruch() z klasy Ssak, pobierającą wartość całkowitą.

Programista chce wywołać metodę Ruch (int) z obiektu Fido klasy Pies. Jest jednak pewien problem, gdyż klasa Pies nadpisała metodę Ruch(), ale nie przeciążyła jej czyli funkcja Ruch (int) nie jest bezpośrednio dostępna. Rozwiązaniem jest bezpośrednie odwołanie się do klasy Ssak i wywołanie metody Ruch (int) tak, jak jest to wykonane w linii 33.

Tak wygląda bezpośrednie wywołanie metody klasy Ssak. Listing 16.7 przybliża to zagadnienie.

Listing 16.7. Wywoływanie metody klasy bazowej z klasy z nadpisaną metodą

1:    //Listing 16.7 Wywołanie metody bazowej z nadpisanej

2:

3:    ttinciude <iostream.h>

4;

5:    class Ssak

6:    {

7:    public:

8:    void Ruch() const { cout « "Ssak przeszedł jeden krok\n"; }

9:    void Ruch(int    distance)    const

10:    { cout « "Ssak    przeszedł    "    « distance « " kroki.\n"; 1

11:    protected:

12:    int jegoWiek;

13:    int jegoWaga;

14:    J;

15:

16:    class Pies : public Ssak

17:    {

18:    public:

19:    void Ruch()const;

20:    );

21:

22:    void Pies::Ruch() const

23:    {

24:    cout « "Ruch psa...\n";

25:    Ssak::Ruch(3);

26:    }

27:

28:    int main()

29:    {

30:    Ssak bigAnimal;

31:    Pies fido;

32:    bigAnimal.Ruch(2);

33:    fido.Ssak::Ruch(4);

34:    return 0;

35:    }

EFEKT DZIAŁANIA

Ssak przeszedł 2 kroki. Ssak przeszedł 4 kroki.

ANALIZA:


W linii 30 jest tworzony obiekt klasy' Ssak o nazwie duzeZwierze i Fido klasy Pies. W linii 32 wywołujemy metodę Ruch() z klasy Ssak, pobierającą wartość całkowitą.

Programista chce wywołać metodę Ruch (int) z obiektu Fido klasy Pies. Jest jednak pewien problem, gdyż klasa Pies nadpisała metodę Ruch (), ale nie przeciążyła jej czyli funkcja Ruch (int) nie jest bezpośrednio dostępna. Rozwiązaniem jest bezpośrednie odwołanie się do klasy Ssak i wywołanie metody Ruch (int) tak, jak jest to wykonane w linii 33.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0238 Dziedziczenie i polimorfizmGodzina 16    Dziedziczenie 17 &
Poznaj C++ w$ godziny0241 Dziedziczenie 233 Dziedziczenie 233 Rysunek 16.1 Hierarchia zwierzątKróles
Poznaj C++ w$ godziny0243 Dziedziczenie 235 Ten program nie wypisuje nic na ekranie, gdyż jest jedyn
Poznaj C++ w$ godziny0245 Dziedziczenie 237 43:    void ProsOJedzenie() { cout « &quo
Poznaj C++ w$ godziny0247 Dziedziczenie 239 60: 61:    Pies::Pies () : 62:
Poznaj C++ w$ godziny0251 Dziedziczenie 243 Zauważ, że w linii 74, domyślny konstruktor klasy Pies w
Poznaj C++ w$ godziny0253 Dziedziczenie 245 Dziedziczenie 245 destruktor Psa. . destruktor Ssaka des
Poznaj C++ w$ godziny0005 Część VI Tematy specjalne 293 20 Specjalne klasy i
Poznaj C++ w$ godziny0032 16 Godzina 2 W linii 1 do programu dołączany jest plik iostream.h. Kompila
Poznaj C++ w$ godziny0037 Program w C++ 21 16:    cout « "Wywołanie funkcji Add(
Poznaj C++ w$ godziny0056 Instrukcje i wyrażenia 41 Dzielenie całkowite wygląda trochę inaczej niż z
Poznaj C++ w$ godziny0072 58 Godzina 5 Rysunek 5.1 W momencie wywołania funkcji program przechodzi d
Poznaj C++ w$ godziny0086 72 Godzina 5 Kiedy wywołasz funkcję 10 razy, to program tyle samo razy „sk
Poznaj C++ w$ godziny0096 82 Godzina 6Kilka słów o konwencji nazw Tak jak każdy programista, musisz
Poznaj C++ w$ godziny0119 Zaawansowane sterowanie programem 107Pętle while Pętla while pozwala na po
Poznaj C++ w$ godziny0138 Godzina 9Wskaźniki Ogromną zaletą C++ i bardzo potężnym narzędziem jest mo
Poznaj C++ w$ godziny0149 138 Godzina 9 Widać tutaj analogię z telefonem. Możesz zaprogramować swój
Poznaj C++ w$ godziny0153 142 Godzina 9Pytania i odpowiedzi P: Dlaczego wskaźniki są aż tak ważne? O
Poznaj C++ w$ godziny0155 144 Godzina 10Usuwanie obiektów Kiedy wywołasz delete na wskaźniku do obie

więcej podobnych podstron