206
W liniach 34-37 kasowane i odtwarzane są wewnętrzne zmienne obiektu. Nie jest to operacja niezbędna, ale pozwala ona uniknąć problemów z „gubieniem” pamięci w przypadku obiektów o zmiennym rozmiarze, dla których nie został przeciążony operator przypisania.
Co się stanie, gdy spróbujesz przypisać zmienną jednego z wbudowanych w C++ typów, taką jak int czy unsigned short do obiektu, który sam zdefiniowałeś? Listing 14.7. ponownie definiuje klasę Licznik i próbuje przypisać zmienną typu int do obiektu klasy Licznik.
Program 14.7 nie skompiluje się!
Listing 14.7. Próba przypisania zmiennej int do obiektu klasy Licznik
1: // Listing 14.7
2:' // Ten program się nie skompiluje!
3:
4:
5: #include <iostream.h>
7: class Licznik
9: public:
10: Licznik();
11: -Licznik (){}
12: int PobierzWartosc()const { return jegoWartosc; }
13: void UstawWartosc(int x) {jegoWartosc = x; }
14: private:
15: int jegoWartosc;
16:
18:
19: Licznik::Licznik():
20: jegoWartosc(0)
21: {}
23: int main()
25: int zlnt = 5;
26: Licznik licz = zlnt;
27: cout « "licz: " « licz.PobierzWartosc() « endl;
28: return 0;
29: }
206
W liniach 34-37 kasowane i odtwarzane są wewnętrzne zmienne obiektu. Nie jest to operacja niezbędna, ale pozwala ona uniknąć problemów z „gubieniem" pamięci w przypadku obiektów o zmiennym rozmiarze, dla których nie został przeciążony operator przypisania.
Co się stanie, gdy spróbujesz przypisać zmienną jednego z wbudowanych w C++ typów, taką jak int czy unsigned short do obiektu, który sam zdefiniowałeś? listing 14.7. ponownie definiuje klasę Licznik i próbuje przypisać zmienną typu int do obiektu klasy Licznik.
Program 14.7 nie skompiluje się!
Listing 14.7. Próba przypisania zmiennej int do obiektu klasy Licznik
1: II Listing 14.7
2: II Ten program się nie skompiluje!
3:
4:
5: (tinclude <iostream.h>
6:
7: class Licznik
8: 1
9: public:
10: Licznik!) ;
11: -Liczniki) {}
12: int PobierzWartosc()const ( return jegoWartosc; )
13: void OstawWartosc(int x) {jegoWartosc = x; )
14: private:
15: int jegoWartosc;
16:
18:
19: Licznik::Licznik():
20: jegoWartosc(0)
22:
23: int main()
25: int zlnt = 5;
26: Licznik licz = zlnt;
27: cout « "licz: " « licz.PobierzWartosc!) « endl;
28: return 0;
29: )