13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 340 — #378<br />

✐<br />

Capítulo 12. Sobrecarga de operadores<br />

}<br />

const Integer<br />

operator>>(const Integer& left,<br />

const Integer& right) {<br />

return Integer(left.i >> right.i);<br />

}<br />

// Assignm<strong>en</strong>ts modify & return lvalue:<br />

Integer& operator+=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i += right.i;<br />

return left;<br />

}<br />

Integer& operator-=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i -= right.i;<br />

return left;<br />

}<br />

Integer& operator*=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i *= right.i;<br />

return left;<br />

}<br />

Integer& operator/=(Integer& left,<br />

const Integer& right) {<br />

require(right.i != 0, "divide by zero");<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i /= right.i;<br />

return left;<br />

}<br />

Integer& operator%=(Integer& left,<br />

const Integer& right) {<br />

require(right.i != 0, "modulo by zero");<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i %= right.i;<br />

return left;<br />

}<br />

Integer& operator^=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i ^= right.i;<br />

return left;<br />

}<br />

Integer& operator&=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i &= right.i;<br />

return left;<br />

}<br />

Integer& operator|=(Integer& left,<br />

const Integer& right) {<br />

if(&left == &right) {/* self-assignm<strong>en</strong>t */}<br />

left.i |= right.i;<br />

return left;<br />

}<br />

Integer& operator>>=(Integer& left,<br />

340<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!