05.09.2016 Views

Стефан Р. - С++ Для чайников

Create successful ePaper yourself

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

встроенных типов. Вы также вряд ли сможете внятно объяснить, что такое сложение<br />

двух целочисленных значений (если, конечно, не имеете соответствующей<br />

ученой степени).<br />

Приведенные ниже примеры демонстрируют, как могут быть определены операторы<br />

сложения и инкремента для класса USDollar (я мог бы реализовать такие же<br />

функции и для канадских долларов, но тогда мне бы понадобился канадец для придания<br />

комментариям канадского акцента).<br />

// USDoliar — объект, который содержит целое число долларов<br />

// плюс целое число центов. Сто центов равны<br />

// одному доллару<br />

class USDDllar<br />

friend USDollar operator+ (USDollar&, USDollarS) ;<br />

friend USDoilarS operator++(USDollarS);<br />

public:<br />

USDollar(unsigned int d, unsigned int c);<br />

protected:<br />

unsigned int dollars;<br />

unsigned int cents;<br />

// конструктор<br />

USDollar::USDollar(unsigned int d, unsigned int c)<br />

{<br />

dollars = d;<br />

cents = c;<br />

while (cents >= 100)<br />

dollars++;<br />

cents -= 100;<br />

// operator+ — складывает si с s2 и возвращает<br />

// результат в виде нового объекта<br />

USDollar operator+(USDollars si, USDollarS s2)<br />

{<br />

unsigned int cents = si.cents + s2.cents;<br />

unsigned int dollars = si.doliars + s2.doliars<br />

USDcJlar d(dollars, cents);<br />

return d;<br />

// operator++ — увеличивает указанный аргумент,<br />

// изменяя значение объекта<br />

USDollarS cperator4-f (USDollar& s)<br />

{<br />

s.cents++;<br />

if {:;.cents >= 100)<br />

!<br />

3.cents -= 100;<br />

з.dollars++;<br />

i<br />

return s;<br />

Глава 24. Перегрузка операторов 267

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

Saved successfully!

Ooh no, something went wrong!