Poznaj C++ w$ godziny0217

Poznaj C++ w$ godziny0217



208 Godzina 14

licz: 5

ANALIZA:


W linii 11 zaszła ważna zmiana. Przeciążyliśmy konstruktor klasy tak, aby pobierał wartość typu int. Linie 24-26 zawierają implementację tego konstruktora. W efekcie otrzymaliśmy możliwość tworzenia obiektu klasy Licznik na podstawie wartości typu int.

Teraz kompilator ma możliwość wywołania konstruktora pobierającego jako argument wartość int. Zobacz jednak co będzie, kiedy spróbujemy odwrócić kolejność przypisania:

1:    Licznik licz(5);

2:    int zlnt = licz;

3:    cout « "zlnt : " « zlnt « and;'

Taka sekwencja instrukcji ponownie spowoduje błąd kompilacji. Mimo że kompilator wie, jak przypisać wartość int do obiektu Licznik, to nie ma pojęcia, jak wykonać przypisanie odwrotne.

Operator int ()

Żeby rozwiązać postawiony problem, C++ wprowadza operatory konwersji, które mogą zostać dodane do tworzonej klasy. Dzięki temu możemy określić, w jaki sposób ma przebiegać bezpośrednie przypisanie obiektu do zmiennych wbudowanych w C++. Ilustruje to listing 14.9. Jedna uwaga: operator konwersji nie ma określonej wartości typu wartości zwracanej. Zwraca on przekonwertowaną wartość.

Listing 14.9. Konwersja Licznik do int

1:    // Listing 14.9

2:    // Operator konwersji

3:

4:

5:    #include <iostream.h>

6:

7:    class Licznik

8:    {

9:    public:

10:    Licznik ();

11:    Licznik(int wartość);

12:    -Licznik() {)

13:    int FobierzWartosc() const    {    return    jegoWartosc; }

14:    void UstawWartosc(int    x)    {    jegoWartosc    =    x;    }

15:    operator int();

16:    private:

17:    int jegoWartosc;

18:

19:    >;

20:

21:    Licznik::Licznik():

22:    j egoWartosc(0)

EFEKT DZIAŁANIA

I


licz: 5

ANALIZA:


W linii 11 zaszła ważna zmiana. Przeciążyliśmy konstruktor klasy tak, aby pobierał wartość typu int. Linie 24—26 zawierają implementację tego konstruktora. W efekcie otrzymaliśmy możliwość tworzenia obiektu klasy Licznik na podstawie wartości typu int.

Teraz kompilator ma możliwość wywołania konstruktora pobierającego jako argument wartość int. Zobacz jednak co będzie, kiedy spróbujemy odwrócić kolejność przypisania:

1:    Licznik licz (5);

2:    int zlnt = licz;

3:    cout « "zlnt : " « zlnt « end;'

Taka sekwencja instrukcji ponownie spowoduje błąd kompilacji. Mimo że kompilator wie, jak przypisać wartość int do obiektu Licznik, to nie ma pojęcia, jak wykonać przypisanie odwrotne.

Operator int ()

Żeb>r rozwiązać postawiony problem. C++ wprowadza operatory konwersji, które mogą zostać dodane do tworzonej klasy. Dzięki temu możemy określić, w jaki sposób ma przebiegać bezpośrednie przypisanie obiektu do zmiennych wbudowanych w C++. Ilustruje to listing 14.9. Jedna uwaga: operator konwersji nie ma określonej wartości typu wartości zwracanej. Zwraca on przekonwertowaną wartość.

Listing 14.9. Konwersja Licznik do int

1:    // Listing 14.9

2:    // Operator konwersji

3:

4:

5:    #include <iostream.h>

6;

7:    class Licznik

8:    {

9:    public:

10:    Licznik ();

11:    Licznik(int wartość);

12:    -Licznik () {)

13:    int PobierzWartosc() const    (    return    jegoWartosc; )

14:    void OstawWartosc(int    x)    (    jegoWartosc    =    x;    )

15:    operator int();

16:    private:

17:    int jegoWartosc;

18:

19:    } ;

20:

21:    Licznik::Licznik():

22:    jegoWartosc(0)


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0030 14 Godzina 1 P: Czy można ignorować ostrzeżenia kompilatora (wamings) O: W
Poznaj C++ w$ godziny0048 32 Godzina 3 32 Godzina 3 ANALIZA: W linii 4 deklarowana jest zmienna mala
Poznaj C++ w$ godziny0124 112 Godzina 8 112 Godzina 8 ANALIZA: W linii 10 rozpoczynana jest pętla wh
Poznaj C++ w$ godziny0132 120 Godzina 8 120 Godzina 8 ANALIZA: W linii 8, w instrukcji for wykonywan
Poznaj C++ w$ godziny0166 Referencje 155 Referencje 155 ANALIZA: W linii 8 deklarujemy zmienną lokal
Poznaj C++ w$ godziny0207 198 Godzina 14 198 Godzina 14 ANALIZA: Implementacja operatora ++, zawarta
Poznaj C++ w$ godziny0028 12 Godzina 1 Przepisz program dokładnie. Pamiętaj o wszystkich znakach. Np
Poznaj C++ w$ godziny0032 16 Godzina 2 W linii 1 do programu dołączany jest plik iostream.h. Kompila
Poznaj C++ w$ godziny0053 38 Godzina 4Białe znaki NOWY TERMIN Spacje, tabulacje, znaki końca linii o
Poznaj C++ w$ godziny0055 40 Godzina 4EFEKT DZIAŁANIA; a: Ob: 0x: Oy: 35 a: 9 b: 7 x: 16 y: 16 W lin
Poznaj C++ w$ godziny0062 Instrukcje i wyrażenia 47Instrukcja if Normalnie program wykonuje się lini
Poznaj C++ w$ godziny0063 48 Godzina 4 12:    cout « "


Poznaj C++ w$ godziny0081 Funkcje 67 Program wraca do funkcji main(), do linii 13. Okazuje się, że w
Poznaj C++ w$ godziny0082 68Godzina 5 14:    cout « "Podaj liczbę od 0 do 10,000
Poznaj C++ w$ godziny0084 70 Godzina 5 70 Godzina 5 8: 9: 10 11 12 13 14 15 16 17 18 19 20
Poznaj C++ w$ godziny0100 86 Godzina 6 86 Godzina 6 11 12 13 14 15 16 17 18 19 20
Poznaj C++ w$ godziny0115 102 Godzina 7 Linia 33 w listingu 7.4. rozpoczyna główny blok programu. Aż
Poznaj C++ w$ godziny0123 Zaawansowane sterowanie programem 111 W linii 32 obliczana jest reszta z d
Poznaj C++ w$ godziny0140 Wskaźniki 129 Wskaźniki 129 13 14 15 16 17 18 cout « "longVar: "

więcej podobnych podstron