Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 />
✐