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.

Zaczniemy od operatora + należącego do grupy "dwuargumentowych<br />

operatorów arytmetycznych" (ang. binary arithmetic operator).<br />

Zwracamy tu już na początku rozważań uwagę na przynależność<br />

operatora do określonej grupy, ponieważ overloading różnych<br />

opertorów należących do tej samej grupy przebiega podobnie.<br />

Ponieważ znak + może być także operatorem jednoargumentowym<br />

(ang. unary plus, o czym za chwilę), podkreślamy, że tym razem<br />

chodzi o plus jako operator dodawania. Overloading operatora<br />

przeprowadzimy w stosunku do obiektów prostej, znanej Ci już z<br />

poprzednich przykładów klasy Data, którą (w celu upodobnienia<br />

się do maniery stosowanej w Windows i bibliotekach klas)<br />

nazwiemy tym razem CData. "Namówimy" operator + do<br />

przeprowadzenia operacji na obiektach (dokładniej na polach<br />

obiektów):<br />

CData nowadata = staradata + 7;<br />

// W tydzien pozniej<br />

Operator + musi oczywiście "wiedzieć", na którym polu obiekty<br />

klasy CData przechowują liczbę dni i jak związane są (logicznie)<br />

pola obiektu dz, mc, rok. Jest rzeczą zrozumiałą, że samo<br />

dodanie dni do pola dz może nie wystarczyć, ponieważ data<br />

37.11.93 jest niedopuszczalna.<br />

Jeśli staradata jest obiektem klasy CData z zawartymi wewnątrz<br />

danymi, to w wyniku działania "nowego" operatora + powinien<br />

powstać obiekt nowadata klasy CData, którego pola zostaną w<br />

sensowny sposób powiększone o dodaną liczbę dni. Rozważ<br />

działanie programu (najlepiej skompiluj i uruchom).<br />

[P120.CPP]<br />

/* Overloading operatora dwuargumentowego + */<br />

# include <br />

class CData<br />

{<br />

int dz, mc, rok;<br />

public:<br />

CData() {} //Konstruktor domyslny (pusty)<br />

CData(int d, int m, int y) { mc = m; dz = d; rok = y; }<br />

void Pokazuj() { cout

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

Saved successfully!

Ooh no, something went wrong!