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.

ZNAK::ZNAK(char x)<br />

{<br />

znak_dany = x;<br />

if(znak_dany < 65 || znak_dany >122) znak_dany = '*';<br />

if(znak_dany > 97) znak_dany -= 32;<br />

}<br />

A jeśli użytkownik nie zechce podać żadnego znaku i zda się na<br />

domyślność obiektu? Żaden problem, wystarczy do klasy ZNAK dodać<br />

bezparametrowy konstruktor domyślny. Konstruktory domyślne<br />

spełniają w <strong>C++</strong> taką właśnie rolę:<br />

class ZNAK<br />

{<br />

char znak_dany;<br />

public:<br />

ZNAK(char);<br />

ZNAK(void);<br />

...<br />

//Konstruktor zwykly ("jednoznakowy")<br />

//Konstruktor domyślny (bezparametrowy)<br />

Słowo void (tu opcjonalne) może nie wystąpić. Aby "kłuło w<br />

oczy", który konstruktor jest konstruktorem domyślnym (ang.<br />

default konstructor), większość programistów zapisuje to tak:<br />

class ZNAK<br />

{<br />

char znak_dany;<br />

public:<br />

ZNAK(char);<br />

ZNAK(); //Z daleka widać, że nic nie ma !<br />

...<br />

Definicja konstruktora bezparametrowego będzie wyglądać tak:<br />

ZNAK::ZNAK() { znak_dany = 'X'; }<br />

W zależności od sposobu zadeklarowania obiektu w programie <strong>C++</strong><br />

wywoła automatycznie albo konstruktor ZNAK(char), albo<br />

konstruktor domyślny ZNAK():<br />

ZNAK obiekt; //Nie sprecyzowano jaki, konstruktor domyślny<br />

ZNAK obiekt('m'); //Wiadomo jaki, konstruktor jednoparametrowy<br />

Dzięki temu, że <strong>C++</strong> "pedantycznie" sprawdza przed wywołaniem<br />

funkcji zgodność typów argumentów przekazywanych do funkcji<br />

(konstruktor to też funkcja) i porównuje typ argumentów z<br />

życzeniem programisty wyrażonym w prototypie - bezbłędnie<br />

rozpozna (mimo identycznej nazwy), którą funkcję należy<br />

zastosować.<br />

Dodajmy do klasy ZNAK deklaracje (prototypy) funkcji-metod:<br />

- 288-

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

Saved successfully!

Ooh no, something went wrong!