Poznaj C-h- w pięć minut! 331
Podobnie jak w przypadku operatora +, celowe mogłoby być przedefilowanie operatora «, który wysyła sformatowane dane do strumienia wyjściowego. W C++ służy do tego celu klasa o nazwie ostream. Bez wnikania w szczegóły12, proponuję zapamiętać zastosowaną poniżej sztuczkę:
ostream/; operator « (ostream istr,Complex x)
(
str « x.Czesc_Rzecz () << "-j»" <■<• x.Czesc_Uroj () ; return 3tr;
)
Spójrzmy wreszcie na program przykładowy, który tworzy obiekty i manipuluje nimi:
tfinclude "complex.h" void main()
ł
Complex cl(1,2),c2(3,4); cout « "cl="; cl.wypisz(); cout « "c2=";
C.2.wypisz () ;
cout << ”cl--c2="t< (cl+c2) « endl;
Complex *c_ptr=n©w Complex(1,7); cout << "d)c_ptr wskazuje na obiekt"; c_ptr->wypisz();
cout << "b) c_ptr wskazuje na obiekt"<<*c_ptr« endl; t
Dla formalności prezentuję rezultaty wykonania programu:
cl = l+j *2 c2=3 + j *4 cl +r.2=4+j *6
c_ptr wskazuje na obiekt l+j*7 c_ptr wskazuje r.a obiekt l+j*7
Każdy nowo utworzony obiekt posiada pewne unikalne cechy (wartości swoich atrybutów). Od czasu do czasu zachodzi jednak potrzeba dysponowania czymś w rodzaju zmiennej globalnej w obrębie danej klasy: służą do tego tzw. pola statyczne.
Poprzedzenie w definicji klasy C, atrybutu v słowem stulić, spowoduje utworzenie właśnie tego typu zmiennej. Inicjacja takiego pola może nastąpić nawet przed
13 Nie miejsce tu bowiem na omawianie dość złożonej hierarchii bibliotek klas dostarczanych z dobrymi kompilatorami C i i. Początkującego fana C++ taki opis mógłby dość skutecznie zanudzić...