<div dir="ltr">Hola Miguel Ángel,<div class="gmail_extra"><br><div class="gmail_quote">2013/12/24 Miguel Ángel Torres Fernández-Píñar <span dir="ltr"><<a href="mailto:miguelangeltorresfp@gmail.com" target="_blank">miguelangeltorresfp@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div>Buenos días a todos !!!<br><br></div><div>Y ante todo, muchísimas gracias Steven !!!<br>
<br></div><div>Estoy releyendo los ejemplos que mostrastes para ilustrarme las diferentes posibilidades :<br>
<br></div><div>Tengo una duda con este método :<br></div><div class="im"><div><br><div class="gmail_extra"><span style="color:rgb(111,168,220)">Area2D CrearArea2D( int width, int height = -1 )<br>{</span></div><div class="gmail_extra">
<span style="color:rgb(111,168,220)">  static int _height = 0;</span></div>
<div class="gmail_extra"><span style="color:rgb(111,168,220)"><br></span></div><div class="gmail_extra"><span style="color:rgb(111,168,220)">  if( height >= 0 )  _height = height;</span></div><span style="color:rgb(111,168,220)">
<br>  return Area2D( width, _height );<br>}</span><br><br></div></div><div>1 ) ¿ Se puede declarar una variable estática dentro de un método ???<br></div><div>Qué pasa entonces cada vez que se llama a este método, ¿ no se vuelve a <br>

</div><div>redefinir la variable estática "_height" ???....¿ no se volvería a asignar el valor "0" ???<br><br></div></div></div></div></div></blockquote><div><br></div><div>- Sí; puedes definir variables estáticas locales (a una función).</div>
<div>- No; no se redefine la variable, porque es estática. Esto significa que la variable no es destruida al finalizar la función, ni tampoco se creará más de la primera vez; o sea, seguirá existiendo, hasta el final del programa, pero sólo es accesible dentro del ámbito de esta función.</div>
<div>- No hay asignación a 0 (cero), porque se trata de una inicialización, la cual siempre pertenece a una definición. Como no se redefine, no se reinicializa.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr"><div><div><div><div></div><div>2 ) Cuando dices que recomiendas que sea global a qué te refieres, ¿ te refieres <br>
</div><div>a que esta función esté definida fuera de la estructura "Area2D" ???<br>¿ Como un constructor externo ???<br><br></div></div></div></div></div></blockquote><div><br></div><div>Sí. Como puedes ver, esta función no es miembro de ninguna estructura/clase. Puedes pensar que es un constructor externo. Personalmente, me gusta pensar que es una función auxiliar que se dedica a las "relaciones públicas" y actúa como función "bonita" cara al programador.</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div></div>PD - Steven, responde si buenamente te apetece y tienes tiempo, que esto es por seguir aprendiendo.<br>

<br></div></div></div></div></blockquote><div><br></div><div>Con gusto :)</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>
<div></div>PD - Creo que son super interesantes los patrones estos de diseño de constructores externos para automatizar la creación de objetos.<br><br></div></div></div></blockquote><div><br></div><div>Muchos patrones son interesantes, porque implican soluciones populares y usadas por muchos programadores. Siempre interesa ver cómo los programadores solucionan problemas comunes.</div>
<div><br></div><div><br></div><div>Hasta luego,</div><div><br></div><div>Steven</div><div><br></div><div>P.D.: Feliz Nochebuena y Navidad.</div></div></div></div>