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