16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

LEKCJA 26. CO TO JEST KONSTRUKTOR.<br />

________________________________________________________________<br />

W trakcie tej lekcji dowiesz się, w jaki sposób w pamięci<br />

komputera są tworzone obiekty.<br />

________________________________________________________________<br />

<strong>C++</strong> zawiera specjalną kategorię funkcji - konstruktory w celu<br />

automatyzacji inicjowania struktur (i obiektów). Konstruktory to<br />

specjalne funkcje będące członkami struktur (kategorii member<br />

functions) które są automatycznie wywoływane i dokonują<br />

zainicjowania struktury zgodnie z naszymi życzeniami, po<br />

napotkaniu w programie pierwszej deklaracji struktury/obiektu<br />

danego typu.<br />

PRZYKŁADOWY KONSTRUKTOR.<br />

Struktura Licznik zawiera funkcję inicjującą obiekt (niech<br />

obiekt będzie na razie zmienną typu struktura):<br />

struct Licznik //Typ formalny struktur<br />

{<br />

char znak;<br />

int ile;<br />

} licznik; //Przykladowa struktura<br />

void Inicjuj(char x)<br />

{<br />

licznik.znak = x;<br />

licznik.ile = 0;<br />

}<br />

//Funkcja inicjująca<br />

Zdefiniujmy naszą strukturę w sposób bardziej<br />

"klasowo-obiektowy":<br />

struct Licznik<br />

{<br />

private:<br />

char znak;<br />

int ile;<br />

public:<br />

void Inicjuj(char);<br />

void PlusJeden(void);<br />

};<br />

Funkcja Inicjuj() wykonuje takie działanie jakie może wykonać<br />

konstruktor struktury (obiektu), z tą jednak różnicą, że<br />

konstruktor jest wywoływany automatycznie. Jeśli wyposażymy<br />

strukturę Licznik w konstruktor, to funkcja Inicjuj() okaże się<br />

zbędna. Aby funkcja Inicjuj() stała się konstruktorem, musimy<br />

zmienić jej nazwę na nazwę typu struktury, do której konstruktor<br />

ma należeć. Zwróć uwagę, że konstruktor, w przeciwieństwie do<br />

innych, "zwykłych" funkcji nie ma podanego typu wartości<br />

zwracanej:<br />

- 267-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!