Poznaj C++ w$ godziny0216

Poznaj C++ w$ godziny0216



Przeciążanie operatorów 207

EFEKT DZIAŁANIA:

Compile error! Unable to convert int to Licznik (błąd kompilacji! nie można przekonwertować int do Licznik)

Klasa Licznik, zadeklarowana w liniach 7—17, posiada tylko konstruktor domyślny. Nie ma zadeklarowanej żadnej specjalnej metody do przerabiania zmiennej typu int na obiekt klasy Licznik, dlatego linia 26 jest źródłem błędu kompilacji. Kompilator nie jest w stanie nic zrobić zanim sam nie określisz, że dana wartość typu int ma zostać przypisana do zmiennej wewnętrznej jegoWartosc.

Listing 14.8 rozwiązuje ten problem poprzez stworzenie operatora konwersji: konstruktora pobierającego jako parametr wartość typu int i budującego obiekt klasy Licznik.

Listing 14.8. Konwersja int do Licznik

1:    // Listing 14.8

2:    // Konstruktor jako    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 UstawWartosc(int x) (jegoWartosc = x; }

15:    private:

16:    int jegoWartosc;

17:

18:    };

19:

20:    Licznik::Licznik():

21:    jegoWartosc(0)

22:    {}

23:

24:    Licznik::Licznik(int wartość):

25:    jegoWartosc(wartość)

26:    {}

27:

28:

29:    int main()

30:    {

31:    int zlnt =5;

32:    Licznik licz =    zlnt;

33:    cout « "licz:    "    « licz.PobierzWartosc() « endl;

34:    return 0;

35:    )

EFEKT DZIAŁANIA

Compile error! Onable to convert int to Licznik

(bi<ąd kompilacji! nie można przekonirertotrać int do Licznik)

ANALIZA:


Klasa Licznik, zadeklarowana w liniach 7-17, posiada tylko konstruktor domyślny. Nie ma zadeklarowanej żadnej specjalnej metody do przerabiania zmiennej typu int na obiekt klasy Licznik, dlatego linia 26 jest źródłem błędu kompilacji. Kompilator nie jest w stanie nic zrobić zanim sam nie określisz, że dana wartość typu int ma zostać przypisana do zmiennej wewnętrznej jegoWartosc.

Listing 14.8 rozwiązuje ten problem poprzez stworzenie operatora konwersji: konstruktora pobierającego jako parametr wartość typu int i budującego obiekt klasy Licznik.

Listing 14.8. Konwersja int do Licznik

1:    // Listing 14.8

2:    // Konstruktor jako    operator konwersji

3:

4:

5:    łfinclude <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 CJstawWartosc (int x) (jegoWartosc = x; )

15:    private:

16:    int jegoWartosc;

17:

18:    ) ;

19:

20:    Licznik::Licznik():

21:    jegoWartosc(0)

22:    U

23:

24:    Licznik::Licznik(int wartość):

25:    jegoWartosc(wartość)

26:    O

27:

28:

29:    int main()

30:    (

31:    int zlnt = 5;

32:    Licznik licz =    zlnt;

33:    cout « "licz:    "    « licz.PobierzWartosc() « endl;

34:    return 0;

35:    >


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0187 176 Godzina 12 EFEKT DZIAŁANIA: Compile error: Attempting to return a refe
Poznaj C++ w$ godziny0204 Przeciążanie operatorów W poprzednim rozdziale nauczyłeś się przeciążać me
Poznaj C++ w$ godziny0208 Przeciążanie operatorów 199Listing 14.3. Operator przedrostkowy i
Poznaj C++ w$ godziny0210 Przeciążanie operatorów 201 Przeciążanie operatorów
Poznaj C++ w$ godziny0212 Przeciążanie operatorów 203 ITrzy = 1Jeden + lDwa; niż ITrzy - 1Jeden.Doda
Poznaj C++ w$ godziny0218 Przeciążanie operatorów 209 23:    {} 24: 25:
Poznaj C++ w$ godziny0206 197Przeciążanie operatorów Listing 14.2. Przeciążenie operatora
Poznaj C++ w$ godziny0131 Zaawansowane sterowanie programem 119EFEKT DZIAŁANIA: No to ile razy sie p
Poznaj C++ w$ godziny0214 Przeciążanie
Poznaj C++ w$ godziny0089 Funkcje 75 Kiedy wartość jest odkładana na stos, to jest umieszczana w kom
Poznaj C++ w$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
Poznaj C++ w$ godziny0183 172 Godzina 12 172 Godzina 12 EFEKT DZIAŁANIA: Tworzenie kota... Konstrukt
Poznaj C++ w$ godziny0219 210 Godzina 14Pytania i odpowiedzi P: Po co przeciążać operator skoro możn
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$ godziny0061 46 Godzina 4Operatory relacji Operatory relacji są używane do określenia,
Poznaj C++ w$ godziny0068 Instrukcje i wyrażenia 53 Tabela 4.2. Operatory logiczne Operator Symbol
Poznaj C++ w$ godziny0069 54 Godzina 4Kolejność wykonywania operatorów logicznych Operatory relacji
Poznaj C++ w$ godziny0077 Funkcje 63EFEKT DZIAŁANIA: Podaj temperaturę w stopniach Fehrenheit-a: 212

więcej podobnych podstron