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;
}.
wiek Frisky: 5
niech Frisky ma 6 lat...
wiek Whiskersa: 5
przypisanie Frisky do Whiskersa... wiek Whiskersa: 6
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.
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: }
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.