Poznaj C++ w$ godziny0214

Poznaj C++ w$ godziny0214



Przeciążanie operatorów


205


29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56


KOT KOT::operator=(const KOT & rhs)

{

if (this = 4rhs)

return *this; delete jegoWiek; delete jegoWaga; jegoWiek = new int; jegoWaga = new int;

♦jegoWiek = rhs.PobierzWiek(); ♦jegoWaga = rhs.PobierzWaga(); return *this;

)


int main()

{

KOT frisky;

cout « "wiek Frisky: " « frisky.PobierzWiek() « endl; cout « "niech Frisky ma 6 lat...\n"; frisky.UstawWiek(6);

KOT whiskers;

cout « "wiek Whiskersa: " « whiskers.PobierzWiek() « endl; cout « "przypisanie Frisky do Whiskersa...\n"; whiskers = frisky;

cout « "wiek Whiskersa: " « whiskers.PobierzWiek() « endl; return 0;

}.


EFEKT DZIAŁANIA;


wiek Frisky: 5

niech Frisky ma 6 lat...

wiek Whiskersa: 5

przypisanie Frisky do Whiskersa... wiek Whiskersa: 6


ANALIZA:


Tworzymy klasę KOT z pominięciem konstruktora kopiującego i destruktora (w celu zmniejszenia objętości programu). W linii 14 deklarowany jest operator przypisania. W liniach 30—38 znajduje się jego definicja.


Bardzo ważna jest linia 32. Sprawdza ona, czy nie następuje próba przypisania obiektu do siebie samego. Wykorzystujemy do tego wskaźnik this i porównujemy z adresem przekazanego obiektu rhs. Innym sposobem sprawdzenia jest porównanie obiektów:


if (*this == rhs)

Oczywiście operator porównania (==) również może (a często musi) być przeciążony tak, aby poprawnie porównywał dwa obiekty klasy.


Przeciążanie operatorów

205


29:

KOT::operator=(const KOT & rhs)

if (this = Srhs)

return ‘this; delete jegoHiek; delete jegoHaga; jegoHiek = new int; jegoHaga = new int;

‘jegoHiek = rhs.PobierzHiek(); ‘jegoHaga = rhs.PobierzHaga(); return ‘this;


30:    KOT

31:    {

32:

33:

34:

35:

36:

37:

38:

39:

40:

41:    )

42:

43:

44 :    int main ()

45:    {

46:    KOT frisky;

47:    cout « "wiek Frisky: " « frisky.PobierzWiek() « endl;

48:    cout « "niech Frisky ma 6 lat...\n";

49:    frisky.OstawWiek(6);

50:    KOT whiskers;

51:    cout « "wiek Hhiskersa: " « whiskers.PobierzHiek() « endl;

52:    cout « "przypisanie Frisky do Hhiskersa...\n";

53:    whiskers = frisky;

54:    cout « "wiek Hhiskersa: " « whiskers.PobierzHiek() « endl;

55:    return 0;

56:    }

EFEKT DZIAŁANIA:

wiek Frisky: 5

niech Frisky ma 6 lat...

wiek Hhiskersa: 5

przypisanie Frisky do Hhiskersa... wiek Hhiskersa: 6

ANALIZA


Tworzymy klasę KOT z pominięciem konstruktora kopiującego i destruktora (w celu zmniejszenia objętości programu). W linii 14 deklarowany jest operator przypisania. W liniach 30-38 znajduje się jego definicja.

Bardzo ważna jest linia 32. Sprawdza ona, czy nie następuje próba przypisania obiektu do siebie samego. Wykorzystujemy do tego wskaźnik this i porównujemy z adresem przekazanego obiektu rhs. Innym sposobem sprawdzenia jest porównanie obiektów: if (‘this = rhs)

Oczywiście operator porównania ( — ) również może (a często musi) być przeciążony tak, aby poprawnie porównywał dwa obiekty klasy.


Wyszukiwarka

Podobne podstrony:
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$ 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$ godziny0011 X Poznaj C++ w 24 godziny Ograniczenia przy przeciążaniu operatorów
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$ godziny0206 197Przeciążanie operatorów Listing 14.2. Przeciążenie operatora
Poznaj C++ w$ godziny0217 208 Godzina 14 licz: 5 ANALIZA: W linii 11 zaszła ważna zmiana. Przeciążyl
Poznaj C++ w$ godziny0219 210 Godzina 14Pytania i odpowiedzi P: Po co przeciążać operator skoro możn
Poznaj C++ w$ godziny0248 240 Godzina 16Listing 16.4. Przeciążanie konstruktorów w klasie pochodnej
Poznaj C++ w$ godziny0001 Gdy masz czas tylko na właściwe rozwiązania... Intersoftlcind Gdy masz cza
Poznaj C++ w$ godziny0002 Jesse LibertyC++w 2 4 godziny Tłumaczenie: Grzegorz MichałekInlersofllond
Poznaj C++ w$ godziny0003 Tytuł oryginału: Teach Yourself C++ in 24 Hours, Second Edition Tłumaczeni
Poznaj C++ w$ godziny0004 Spis rozdziałów Część 1 Wstęp do C++ 1 1 Zaczynamy 3 2 Program w C++ 1
Poznaj C++ w$ godziny0005 Część VI Tematy specjalne 293 20 Specjalne klasy i

więcej podobnych podstron