Poznaj C++ w$ godziny0210

Poznaj C++ w$ godziny0210



Przeciążanie operatorów 201

Przeciążanie operatorów 201

22:

23:

24:

25:

26:

27:

28:

29:

30:

31:

32:

33:

34:

35:

36:

37:

38:

39:

40;

41:

42:

43:

44:


Licznik::Licznik(int wartoscPociatkowa): jegoWartoso(wartoscPoczatkowa)

U

Licznik::Licznik(): jegoWartosc(0)

O

Licznik Licznik::Dodaj(const Licznik & rhs)

return Licznik(jegoWartoscł rhs.PobierzWartosc());

}

int main()

{

Licznik lJeden(2), lDwa(4), ITrzy;

ITrzy = 1Jeden.Dodaj(lDwa);

cout « "1 Jeden: " « 1 Jeden. PobierzWartosc ()« endl; cout « "lDwa: " « lDwa.PobierzWartosc() « endl; cout « "ITrzy: " « ITrzy.PobierzWartosc() « endl;

return 0;

}

EFEKT DZIAŁANIA:

1Jeden: 2 lDwa: 4 ITrzy: 6

ANALIZA:


W linii 15 deklarujemy funkcję Dodaj (). Jako parametr pobiera ona

stalą referencję do obiektu klasy Licznik, który będzie dodany do aktualnego obiektu. Funkcja Dodaj () zwraca obiekt, który będzie można przypisać do innego obiektu, tak jak pokazano w linii 38. Widzimy, że 1 Jeden jest obiektem, lDwa jest parametrem funkcji Dodaj (), natomiast ITrzy jest obiektem, do którego będzie przypisany wynik dodawania.

Obiekt ITrzy jest tworzony bez podanej wartości początkowej. Musi być wykorzystany konstruktor domyślny. Inicjalizuje on zmienną jegoWartosc wartością 0, tak jak pokazano w liniach 26-28. Ponieważ obiekty lJeden i lDwa muszą być zainicjalizowane niezerową, podaną wartością, dlatego stworzyliśmy jeszcze jeden konstruktor, zdefiniowany w liniach 22-24. Można było również zrezygnować z konstruktora domyślnego i określić wartość domyślną dla parametru konstruktora zadeklarowanego w linii 11.

Przeciążanie operatora +

W liniach 30-33 poprzedniego programu zdefiniowaliśmy funkcję Dodaj (). Ona działa, lecz jej użycie jest raczej nienaturalne. Lepszym, bardziej intuicyjnym rozwiązaniem jest przeciążenie operatora dodawania (+). Ilustruje to listing 14.5.

22:    Licznik::Licznik(int wartoscPoczatkowa):

23:    jegoWartosc(wartoscPoczatkowa)

24:    U

25:

26:    Licznik::Licznik():

27:    jegoWartosc(0)

28: {}

29:

30:    Licznik Licznik::Dodaj(const Licznik & rhs)

31:    (

32:    return Licznik(jegoWartoscł    rhs.PobierzWartosc());

33:    )

34:

35:    int main()

36:    (

37:    Licznik lJeden (2), lDwa(4),    ITrzy;

38:    ITrzy = lJeden.Dodaj(lDwa);

39:    cout « "lJeden: " « 1 Jeden. PobierzWartosc()« endl;

40:    cout « "lDwa: " « lDwa.PobierzWartosc() « endl;

41:    cout « "ITrzy: " « ITrzy.PobierzWartosc() « endl;

42:

43:    return 0;

44:    }

EFEKT DZIAŁANIA:

lJeden: 2 lDwa: 4 ITrzy: 6

W linii 15 deklarujemy funkcję Dodaj (). Jako parametr pobiera ona stałą referencję do obiektu klasy Licznik, który będzie dodany do aktualnego obiektu. Funkcja Dodaj () zwraca obiekt, który' będzie można przypisać do innego obiektu, tak jak pokazano w linii 38. Widzimy, że lJeden jest obiektem, lDwa jest parametrem funkcji Dodaj (), natomiast ITrzy jest obiektem, do którego będzie przypisany wynik dodawania.

Obiekt ITrzy jest tworzony bez podanej wartości początkowej. Musi być wykorzystany konstruktor domyślny. Inicjalizuje on zmienną jegoWartosc wartością 0, tak jak pokazano w liniach 26-28. Ponieważ obiekty lJeden i lDwa muszą być zainicjalizowane niezerową, podaną wartością, dlatego stworzyliśmy jeszcze jeden konstruktor, zdefiniowany w liniach 22-24. Można było również zrezygnować z konstruktora domyślnego i określić wartość domyślną dla parametru konstruktora zadeklarowanego w linii 11.

Przeciążanie operatora +

W liniach 30-33 poprzedniego programu zdefiniowaliśmy funkcję Dodaj (). Ona działa, lecz jej użycie jest raczej nienaturalne. Lepszym, bardziej intuicyjnym rozwiązaniem jest przeciążenie operatora dodawania (+ ). Ilustruje to listing 14.5.


Wyszukiwarka

Podobne podstrony:
Poznaj C++ w$ godziny0204 Przeciążanie operatorów W poprzednim rozdziale nauczyłeś się przeciążać me
Poznaj C++ w$ godziny0206 197Przeciążanie operatorów Listing 14.2. Przeciążenie operatora
Poznaj C++ w$ godziny0208 Przeciążanie operatorów 199Listing 14.3. Operator przedrostkowy i
Poznaj C++ w$ godziny0212 Przeciążanie operatorów 203 ITrzy = 1Jeden + lDwa; niż ITrzy - 1Jeden.Doda
Poznaj C++ w$ godziny0216 Przeciążanie operatorów 207 EFEKT DZIAŁANIA: Compile error! Unable to conv
Poznaj C++ w$ godziny0218 Przeciążanie operatorów 209 23:    {} 24: 25:
Poznaj C++ w$ godziny0214 Przeciążanie
Poznaj C++ w$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
Poznaj C++ w$ godziny0219 210 Godzina 14Pytania i odpowiedzi P: Po co przeciążać operator skoro możn
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$ godziny0144 Wskaźniki 133 Operator dostępu pośredniego ( * ) jest używany w dwóch różn
Poznaj C++ w$ godziny0193 184 Godzina 13 Listing 13.1. Przeciążanie wewnętrznych funkcji
Poznaj C++ w$ godziny0197 188 Godzina 13Wartości domyślne czy przeciążanie funkcji Programy 13.1 i 1
Poznaj C++ w$ godziny0203 194 Godzina 13Pytania i odpowiedzi P: Dlaczego wymyślono wartości domyślne
Poznaj C++ w$ godziny0207 198 Godzina 14 198 Godzina 14 ANALIZA: Implementacja operatora ++, zawarta
Poznaj C++ w$ godziny0211 202 Godzina 14Listing 14.5. Operator
Poznaj C++ w$ godziny0217 208 Godzina 14 licz: 5 ANALIZA: W linii 11 zaszła ważna zmiana. Przeciążyl

więcej podobnych podstron