{"id":8238,"date":"2022-08-28T13:11:28","date_gmt":"2022-08-28T11:11:28","guid":{"rendered":"https:\/\/xn--nicols-tta.es\/?p=8238"},"modified":"2022-08-28T13:11:28","modified_gmt":"2022-08-28T11:11:28","slug":"poo-en-c","status":"publish","type":"post","link":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/","title":{"rendered":"POO EN C++"},"content":{"rendered":"<audio><\/audio>\n\nProgramaci\u00f3n orientada\n<h2 style=\"text-transform: none;font-style: normal\">a objetos con C++ (I)<\/h2>\n<p style=\"margin-top: 0px;margin-bottom: 1rem;text-align: left;font-weight: 500;color: #7a7a7a;font-family: Roboto, sans-serif;font-size: 16px;font-style: normal;letter-spacing: normal;text-indent: 0px;text-transform: none;background-color: #ffffff\">El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todo<br>tipo de aplicaciones. Aunque en laactualidad otras alternativas, como<br>Java o C#, han alcanzado granpopularidad, C++ sigue siendo el<br>lenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.<br>C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n con<br>la orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible en<br>este campo.<\/p>\n<!-- \/wp:post-content -->\n\n<!--more Sigue leyendo-->\n\n<audio><\/audio>\n\nEl lenguaje C++ es heredero de C, y en este sentidopresenta unas peculiaridades entre las que destaca el\n\nuso de los punteros. En la actualidad muchas personas han aprendido la programaci\u00f3n orientada a obje-\ntos con lenguajes de generaciones posteriores a la de C++.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nEstos presentan muchas ventajas. Laprincipal esque el programador puede en cierta medida ignorar\nlos procesos digamos de m\u00e1s bajo nivel inherentes atoda aplicaci\u00f3n, como por ejemplo la reserva y liberaci\u00f3n de memoria. Pero esta ventaja tambi\u00e9n puede llegar a convertirse en desventaja ya que la rapidez yrobustez de las aplicaciones dependen por completode la capacidad del lenguaje para gestionar eficientemente la memoria.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nCon C++ la mayor parte de la responsabilidad reside en el programador: se gana en flexibilidad y capacidad de realizar todo tipo de tareas demanera extremadamente eficiente, y quiz\u00e1s se pierdeun poco en sencillez. Para los programadores que seenfrentan al aprendizaje de C++ desde el conocimiento de lenguajes como Java o C#, algunos conceptos pueden resultar desconcertantes al principio: direcciones de memoria que apuntan a variable, a funciones,liberaci\u00f3n y reserva de la memoria, espacio que ocupan los objetos en la memoria, etc. Con un poco depaciencia y experiencia enseguida podr\u00e1n observar la versatilidad y potencia de un lenguaje que pr\u00e1cticamente lo permite todo y que al mismo tiempo proporciona la orientaci\u00f3n a objetos de una forma fiel al concepto original.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"left\",\"backgroundColor\":\"light-green-cyan\"} -->\n<h2>EL ENTORNO DE PROGRAMACI\u00d3N<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nLa mejor forma de aprender a programar es programando. Para ello es necesario un entorno de programaci\u00f3n. Existen muchas alternativas gratuitas y depago. Uno de los entornos de programaci\u00f3n mejores\nes Eclipse IDE for C\/C++ Developers.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nEn www.eclipse.org\/downloads se puede descargar.\nAdem\u00e1s se necesita el software MinGW (www.mingw.org), que proporciona las herramientas necesarias para compilar y crear los ejecutables.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nLa descarga e instalaci\u00f3n de las dos herramientas es muysencilla siguiendo los pasos indicados en las correspondientes p\u00e1ginas Web.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"left\",\"backgroundColor\":\"light-green-cyan\"} -->\n<h2>ESTRUCTURA DE UN PROGRAMA EN C++<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:image {\"id\":8283,\"sizeSlug\":\"large\",\"linkDestination\":\"none\"} -->\n<figure><img decoding=\"async\" src=\"https:\/\/xn--nicols-tta.es\/wp-content\/uploads\/2022\/08\/lenguaje-programacion-c-1024x576.webp\" alt=\"\"><\/figure>\n<!-- \/wp:image -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nLa estructura de un programa en C++ simple se define de la siguiente manera:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Directivas del preprocesador (include, define, etc.)\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Declaraci\u00f3n de variables globales\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Prototipos de funciones\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Prototipos de clases\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Funci\u00f3n main\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Definiciones de funciones\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\",\"dropCap\":true,\"backgroundColor\":\"vivid-green-cyan\",\"textColor\":\"white\"} -->\n\n Definiciones de clases\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nNo hay que olvidar que la estructura descrita recoge el caso de un programa simple, es decir, un programa en el que existe un solo fichero de c\u00f3digo fuente.\n\nEn las aplicaciones reales de cierta complejidad\nexisten m\u00e1s elementos a tener en cuenta: varios\nficheros de c\u00f3digo fuente con sus correspondientes\nficheros de cabecera, librer\u00edas, etc. No obstante, por\nmuy complejo que sea el programa, al final la estructura b\u00e1sica en esencia es la misma.\n\nEl proyecto de C++ que va a realizarse para tomar contacto con el\nlenguaje consta de tres ficheros: main.cpp,\nGeomRectangle.cpp y GeomRectangle.h.\n\n&nbsp;El primer fichero de c\u00f3digo fuente es el punto de entrada de la\naplicaci\u00f3n. Los dos ficheros siguientes recogen la\nfuncionalidad de una clase, GeomRectangle, cuya\ncreaci\u00f3n se estudiar\u00e1 a lo largo de este primer art\u00edculo.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nEs probable que el programador que se\nenfrenta por primera vez a un programa en\nC++ encuentre muchas cosas en el c\u00f3digo que\nle desconcierten. No hay que desesperar ya que\ntodas ellas se ir\u00e1n descubriendo poco a poco\ncon el tiempo.\n\nLo importante en ese momento\ninicial es poder empezar a crear peque\u00f1as aplicaciones completamente funcionales para\naprender con la pr\u00e1ctica las caracter\u00edsticas\nfundamentales del lenguaje. El esqueleto de\nmain.cpp es muy simple y sigue la estructura\ndefinida anteriormente:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n#include &lt;cstdlib&gt;\n#include &lt;iostream&gt;\n#include \u201cGeomRectangle.h\u201d\nusing namespace std;\nint main(int argc, char *argv[]) {\n\u00b7\u00b7\u00b7\n}\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nEn primer lugar se encuentran las directivas del\npreprocesador. Con ellas se indica qu\u00e9 librer\u00edas\ndel sistema se van a utilizar. Las dos primeras,\ncstdlib y iostream son librer\u00edas est\u00e1ndar que\nentre otras muchas cosas permiten mostrar\ninformaci\u00f3n por la consola est\u00e1ndar. La tercera sentencia include es diferente. Con ella se\nhace referencia al fichero de cabecera donde se\ndefine una clase. Es decir, es en cierto un modo\nuna librer\u00eda, pero de desarrollo propio.\nSeguidamente aparece una sentencia using\nnamespace std que por el momento vamos a\nignorar. Por \u00faltimo est\u00e1 la funci\u00f3n main, que es\nel punto de entrada de la aplicaci\u00f3n.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nLos argumentos que recibe sirven para coger los par\u00e1metros\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nde entrada de la aplicaci\u00f3n. El resultado que devuelve es un valor num\u00e9rico que\nindica c\u00f3mo termina la aplicaci\u00f3n. Por el\nmomento ninguno es relevante. Antes de pasar\na ver el c\u00f3digo de la funci\u00f3n main se va a estudiar la creaci\u00f3n de la clase\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nGeomRectangle.\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:heading {\"textAlign\":\"left\"} -->\n<h2>DEFINICI\u00d3N DE UNA CLASE<\/h2>\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph -->\n\nEn el fichero GeomRectangle.h se encuentra\nla definici\u00f3n de la clase. Una clase se define\ncon la palabra reservada class:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nclass GeomRectangle {\nprivate:\n\/* \u00b7\u00b7\u00b7 *\nLos m\u00e9todos de una clase pueden definirse\ndentro de la estructura class o pueden defi-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\nnirse fuera. En este ejemplo hay m\u00e9todos\nescritos de las dos formas. Todos son p\u00fabli-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph -->\n\ncos. El primer m\u00e9todo se denomina\nsetPosition y sirve para establecer la posici\u00f3n\ndel rect\u00e1ngulo en el plano. Recibe como\npar\u00e1metros dos valores num\u00e9ricos, x e y, con\nlas coordenadas:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid setPosition(int x, int y) {\nthis-&gt;x = x;\nthis-&gt;y = y;\n}\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nLa palabra reservada this seguida del opera-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\ndor flecha (-&gt;) se utiliza para acceder a los\nmiembros de la clase evitando la confusi\u00f3n\nque podr\u00eda producirse debido a que los nom-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nbres de los par\u00e1metros del m\u00e9todo y los\nnombres de los miembros de la clase son\niguales. El siguiente m\u00e9todo es getPosition,\nque sirve para obtener la posici\u00f3n actual del\nrect\u00e1ngulo. Los par\u00e1metros que recibe el\nm\u00e9todo son igualmente x e y pero ahora se\nutiliza el operador de direcci\u00f3n (&amp;) lo que sig-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nnifica que en realidad se est\u00e1n pasando las\ndirecciones de memoria de x e y:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid getPosition(int &amp;x, int &amp;y) {\nx = this-&gt;x;\ny = this-&gt;y;\n}\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nEl c\u00f3digo es muy simple. Se asignan a x e y\nlos valores de los miembros de la clase. Es\ndecir, x e y son en este caso par\u00e1metros de\nsalida. Los m\u00e9todos moveHor y moveVer se\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nutilizan para mover el rect\u00e1ngulo horizontal\ny verticalmente:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid moveHor(int d) {\nthis-&gt;x = this-&gt;x + d;\n}\nvoid moveVer(int d) {\nthis-&gt;y = this-&gt;y + d;\n}\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nLos m\u00e9todos makeSmaller y makeBigger se\nemplean para hacer el rect\u00e1ngulo m\u00e1s grande\n\no m\u00e1s peque\u00f1o, pero sin moverlo de su posi-\n\nci\u00f3n. Como aspecto interesante cabe se\u00f1alar\n\nque en este caso se accede a los miembros de\n\nla clase directamente, sin utiliza la expresi\u00f3n\n\nthis-&gt;. \u00c9ste es el m\u00e9todo habitual. La expresi\u00f3n\n\nthis-&gt; se ha empleado en los m\u00e9todos anterio-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nres porque los nombres de los par\u00e1metros y los\nnombres de los miembros de la clase eran\niguales. Pero aqu\u00ed no se produce esa confusi\u00f3n:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid makeSmaller() {\nx = x + (4\/2);\ny = y + (4\/2);\nw = w &#8211; 4;\nh = h &#8211; 4;\n}\nvoid makeBigger() {\nx = x &#8211; (4\/2);\ny = y &#8211; (4\/2);\nw = w + 4;\nh = h + 4;\n}\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nFinalmente los m\u00e9todos setDimension y\ngetDimension, a imagen y semejanza de\nsetPosition y getPosition, devuelven el\n\n&nbsp;tama\u00f1o del rect\u00e1ngulo. El c\u00f3digo de estos dos\nm\u00e9todos est\u00e1 fuera de la clase por lo que en\nella s\u00f3lo se encuentran las cabeceras:\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid setDimension(int w, int h);\nvoid getDimension(int &amp;w, int &amp;h);\n\nEl fichero GeomRectangle.cpp, que podr\u00edamos\n\ndenominar de implementaci\u00f3n de la clase, con-\n\ntiene precisamente el c\u00f3digo correspondiente\n\nde todo aquello de la clase que no se ha imple-\n\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nmentado en la propia definici\u00f3n de la clase.\n\ninclude \u201cGeomRectangle.h\u201d\n\n<!-- \/wp:heading -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nvoid GeomRectangle::setDimension(int w,\nint h) {\nthis-&gt;w = w;\nthis-&gt;h = h;\n};\nvoid GeomRectangle::getDimension(int &amp;w,\nint &amp;h) {\nw = this-&gt;w;\nh = this-&gt;h;\n}\n\nLos m\u00e9todos se escriben precedidos del nom-\n\nbre de la clase y dos puntos. De esta forma\n\nqueda explicitado que en realidad se est\u00e1n\n\ndefiniendo m\u00e9todos de una clase dada, a la\nque adem\u00e1s se hace referencia la directiva\ninclude del preprocesador.\n<h1>&nbsp;<u>UTILIZACI\u00d3N DE LOS OBJETOS<\/u><\/h1>\nHasta aqu\u00ed se ha visto la creaci\u00f3n de una clase muy simple con la que ya se puede empezar a jugar en la funci\u00f3n main de la aplicaci\u00f3n. Pero antes hay que fijar algunos conceptos b\u00e1sicos en relaci\u00f3n a la memoria y el ciclo de vida de los objetos\n\nESPACIOS DE MEMORIA: LA PILA Y EL MONT\u00d3N\n\nCada vez que se ejecuta un programa se reserva un espacio de memoria denominado pila, en ingl\u00e9s stack. El tama\u00f1o de la pila es fijo y se define en el tiempo de enlazado (linking).\n\nEntre otras tareas la pila se emplea para almacenar las variables locales y los par\u00e1metros de las funciones. La principal ventaja de la pila, como estructura en el modelo de memoria de un proceso, es la rapidez.\n\nLos dos inconvenientes principales es que su tama\u00f1o es fijo, demasiado peque\u00f1o para algunas aplicaciones, y adem\u00e1s s\u00f3lo es posible almacenar variables de tama\u00f1o conocido en tiempo compilaci\u00f3n.\n\nLos programas pueden emplear otro tipo diferente de espacio en memoria que se denomina mont\u00f3n, en ingl\u00e9s heap.\n\nEl mont\u00f3n es una zona reservada de la memoria donde se van almacenando variables, estructuras, objetos, etc. No establece ning\u00fan orden de entrada o salida de sus elementos.\n\nEl tama\u00f1o de esta zona de memoria suele ser mayor que el de la pila, el programador lo define y lo puede ampliar en cualquier momento. Conindependencia del tipo y tama\u00f1o de los datos guardados en el mont\u00f3n, s\u00f3lo es posible acceder a ellos a trav\u00e9s de un puntero. En C++ una variable que se define en el c\u00f3digo como:\n<pre>GeomRectangle geomRect1;<\/pre>\n&nbsp;representa a un objeto que se almacena en la pila. El acceso a las propiedades y los m\u00e9todos del objeto se realiza con el operador punto (.). Por ejemplo:\n<pre>geomRect1.setDimension(320, 200);<\/pre>\n&nbsp;En cambio una variable que se define como:\n<pre>GeomRectangle* geomRect2;<\/pre>\n<!-- \/wp:paragraph -->\n\n<!-- wp:paragraph {\"align\":\"left\"} -->\n\nrepresenta a un objeto que se almacena en el mont\u00f3n. El acceso a las propiedades y los m\u00e9todos del objeto se realiza con el operador fecha (-&gt;). Por ejemplo:\n<pre>geomRect2-&gt;setDimension(320, 200);<\/pre>\nEn realidad el operador flecha es una combinaci\u00f3n de dos operadores: el operador asterisco (*) que dada una posici\u00f3n de memoria, un puntero, permite acceder al dato almacenado en dicha posici\u00f3n; y el operador punto (.), que dado un objeto permite acceder a sus propiedades y m\u00e9todos.\n\nPor ello la expresi\u00f3n anterior podr\u00eda rescribirse como:\n<pre>(*geomRect2).setDimension(320, 200);&nbsp;<\/pre>\n&nbsp;Los objetos creados en la pila se crean en el mismo momento que se declaran, de forma transparente al programador.\n\nEs decir, la expresi\u00f3n GeomRectangle geomRect1 provoca impl\u00edcitamente que se cree un nuevo objeto de tipo GeomRectangle, reservando el espacio necesario en el \u00e1rea de memoria correspondiente a la pila, de forma transparente.\n\n&nbsp;Cuando el programa termina, la pila desaparece, y con ello la memoria utilizada por el objeto se libera, tambi\u00e9n de forma transparente.\n\nEn cambio los objetos creados en el mont\u00f3n deben crearse y eliminarse expl\u00edcitamente. La creaci\u00f3n se lleva a cabo con la palabra reservada newy la eliminaci\u00f3n con la palabra reservada delete:\n\n&nbsp;geomRect2 = new GeomRectangle();\n\n&nbsp;\u00b7\u00b7\u00b7&nbsp;\n\ndelete geomRect2;\n\n&nbsp;CICLO DE VIDA DE UN OBJETO\n\n&nbsp;El ciclo de vida de un objeto viene marcado por tres tareas distintas: creaci\u00f3n, asignaci\u00f3n y destrucci\u00f3n.\n\nEs de vital importancia conocer bien el ciclo de vida de los objetos en C++ para llegar a programar aplicaciones eficientes. Los objetos se crean cuando se declaran (si se trata de objetos que se almacenan en la pila) o bien cuando se utiliza expl\u00edcitamente el operador new.\n\nLos constructores son las funciones de los objetos que se utilizan durante su creaci\u00f3n para inicializarlos. En el c\u00f3digo, un constructor es una funci\u00f3n que tiene el mismo nombre que la clase y que no devuelve nada.\n\nLa implementaci\u00f3n de un constructor est\u00e1 sujeta a las mimas reglas que la implementaci\u00f3n de los m\u00e9todos. Por ejemplo:\n<pre>class GeomRectangle {\nprivate:\nint x, y, w, h;\npublic:\nGeomRectangle() {\nx = 0; y = 0; w = 0; h = 0;\n }\nGeomRectangle(int x, int y, int w, int h) {\nthis-&gt;x = x; this-&gt;y = y;\nthis-&gt;w = w; this-&gt;h = h;\n} \u00b7\u00b7\u00b7<\/pre>\n<pre>}<\/pre>\nEn esta nueva definici\u00f3n de la clase GeomRectangle hay dos constructores: el primero no recibe par\u00e1metros, por lo que se denomina tambi\u00e9n el constructor por defecto; el segundo recibe cuatro par\u00e1metros que se emplean para inicializar las propiedades del objeto. Los constructores se utilizan tanto para aquellos objetos que se almacenan en la pila como para aquellos otros que se almacenan en el mont\u00f3n:\n<pre>&nbsp;GeomRectangle geomRect3(0, 0, 320, 200);&nbsp;\ngeomRect4 = new GeomRectangle(0, 0, 320, 200);<\/pre>\nUna clase puede definir tantos constructores como sea necesario. E incluso es posible que la implementaci\u00f3n de un constructor termine llamando a otro. Por ejemplo:\n<pre>GeomRectangle(int x, int y) {&nbsp;<\/pre>\n<pre>GeomRectangle(x, y, 0, 0);&nbsp;<\/pre>\n<pre>}<\/pre>\n&nbsp;Existe un tipo especial de constructor denominado de copia, en ingl\u00e9s copy constructor. Se&nbsp;utiliza que cuando se desea crear un objeto que sea una copia id\u00e9ntica de otro. Si el programador no escribe este constructor C++ asigna uno por defecto.\n\nEn C++ por defecto los par\u00e1metros se pasan a las funciones por par\u00e1metro. Esto significa que la funci\u00f3n recibe una copia de la variable que se pasa como par\u00e1metro, no la variable misma.\n\n&nbsp;Por lo tanto cada vez que se pasa como par\u00e1metro un objeto se crea una copia del mismo con el constructor de copia.\n\nCon el fin de evitar que se est\u00e9n creando din\u00e1micamente copias de objetos las funciones se pueden declarar de forma reciban una referencia al objeto que se pasa como par\u00e1metro, en vez de una copia. Es lo que se conoce como el paso de par\u00e1metros por referencia.\n\nCuando se pasa a una funci\u00f3n un objeto por referencia en realidad se est\u00e1 pasando la direcci\u00f3n de memoria de dicho objeto.\n\nLas direcciones de memoria en C++ son punteros, y los punteros tambi\u00e9n pueden referenciar variables locales.\n\nEl operador de direcci\u00f3n (&amp;) permite obtener la direcci\u00f3n de memoria donde se almacena una variable dada. El paso de par\u00e1metros por referencia ahorra memoria y tiempo, pero plantea un posible problema ya que la funci\u00f3n puede modificar el objeto original.\n\n&nbsp;Para evitarlo se utiliza la palabra reservada const, que evita que el objeto original pueda ser modificado.\n\nCuando un objeto va a ser destruido tienen lugar dos tareas: el destructor del objeto se ejecuta y la memoria que dicho objeto estaba utilizando se libera. No es obligatorio hacer un destructor, de la misma forma que no es obligatorio hacer un constructor.\n\nNormalmente los destructores se escriben para liberar recursos obtenidos din\u00e1micamente (memoria, ficheros, acceso a base de datos, sockets, etc.) justo antes de que el objeto se destruya.\n\nSi una clase no tiene destructor el sistema le asigna uno por defecto. Los objetos que se almacenan en la pila se destruyen autom\u00e1ticamente simplemente cuando ya no se necesitan.\n\n&nbsp;Por ejemplo, si el objeto se crea dentro de una sentencia if, al finalizar dicha sentencia el objeto se destruye.\n\nEn cambio los objetos que se almacenan en el mont\u00f3n deben ser destruidos expl\u00edcitamente utilizando la palabra reservada delete.\n\n&nbsp;De la misma forma que ocurre con los tipos simples en C++ se pueden asignar unos objetos a otros. Aunque esta tarea se lleva a cabo con el operador de asignaci\u00f3n (=) en realidad se utiliza una funci\u00f3n de especial de objetos, a imagen y semejanza de lo que ocurre con funciones como el constructor, el destructor o el constructor de copia.\n\nPARA VER EL DOCUMENTO ORIGINAL PINCHA<a href=\"https:\/\/nicol\u00e1s.es\/producto\/curso-c-en-pdf\/\" target=\"_blank\" rel=\"noopener\"> AQUI<\/a>\n\n<!-- \/wp:paragraph -->","protected":false},"excerpt":{"rendered":"<p>El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todo<br \/>\ntipo de aplicaciones. Aunque en laactualidad otras alternativas, como<br \/>\nJava o C#, han alcanzado granpopularidad, C++ sigue siendo el<br \/>\nlenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.<br \/>\nC++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n con<br \/>\nla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible en<br \/>\neste campo.<\/p>\n","protected":false},"author":4,"featured_media":8240,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48,40],"tags":[49,41,9,42,50,23],"class_list":["post-8238","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cursos","category-programacion-informatica","tag-c-2","tag-c","tag-desarrollo","tag-golang","tag-informatica","tag-programacion"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>POO EN C++ - Vista Previa<\/title>\n<meta name=\"description\" content=\"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programaci\u00f3n orientadaa objetos con C++ (I)\" \/>\n<meta property=\"og:description\" content=\"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Vista Previa\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-28T11:11:28+00:00\" \/>\n<meta name=\"author\" content=\"Nicol\u00e1s\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Programaci\u00f3n orientadaa objetos con C++ (I)\" \/>\n<meta name=\"twitter:description\" content=\"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nicol\u00e1s\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/\"},\"author\":{\"name\":\"Nicol\u00e1s\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#\\\/schema\\\/person\\\/25f4a9fc1df1ccf47b26f0627129af16\"},\"headline\":\"POO EN C++\",\"datePublished\":\"2022-08-28T11:11:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/\"},\"wordCount\":2757,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"keywords\":[\"C\",\"C++\",\"desarrollo\",\"Golang\",\"Inform\u00e1tica\",\"programaci\u00f3n\"],\"articleSection\":[\"Cursos\",\"Programaci\u00f3n Inform\u00e1tica\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/\",\"url\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/\",\"name\":\"POO EN C++ - Vista Previa\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#primaryimage\"},\"thumbnailUrl\":\"\",\"datePublished\":\"2022-08-28T11:11:28+00:00\",\"description\":\"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#primaryimage\",\"url\":\"\",\"contentUrl\":\"\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/2022\\\/08\\\/28\\\/poo-en-c\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programaci\u00f3n orientada a objetos con C++\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#website\",\"url\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/\",\"name\":\"Vista Previa\",\"description\":\"TEMAS WORDPRESS\",\"publisher\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#organization\",\"name\":\"Vista Previa\",\"url\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/cropped-nicolas-N-tramp.png\",\"contentUrl\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/wp-content\\\/uploads\\\/2021\\\/10\\\/cropped-nicolas-N-tramp.png\",\"width\":512,\"height\":512,\"caption\":\"Vista Previa\"},\"image\":{\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/#\\\/schema\\\/person\\\/25f4a9fc1df1ccf47b26f0627129af16\",\"name\":\"Nicol\u00e1s\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g\",\"caption\":\"Nicol\u00e1s\"},\"url\":\"https:\\\/\\\/xn--nicols-tta.es\\\/wordpress\\\/multisite\\\/temas\\\/blog\\\/author\\\/nicolas\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"POO EN C++ - Vista Previa","description":"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/","og_locale":"es_ES","og_type":"article","og_title":"Programaci\u00f3n orientadaa objetos con C++ (I)","og_description":"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0","og_url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/","og_site_name":"Vista Previa","article_published_time":"2022-08-28T11:11:28+00:00","author":"Nicol\u00e1s","twitter_card":"summary_large_image","twitter_title":"Programaci\u00f3n orientadaa objetos con C++ (I)","twitter_description":"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0","twitter_misc":{"Escrito por":"Nicol\u00e1s","Tiempo de lectura":"13 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#article","isPartOf":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/"},"author":{"name":"Nicol\u00e1s","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#\/schema\/person\/25f4a9fc1df1ccf47b26f0627129af16"},"headline":"POO EN C++","datePublished":"2022-08-28T11:11:28+00:00","mainEntityOfPage":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/"},"wordCount":2757,"commentCount":0,"publisher":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#organization"},"image":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#primaryimage"},"thumbnailUrl":"","keywords":["C","C++","desarrollo","Golang","Inform\u00e1tica","programaci\u00f3n"],"articleSection":["Cursos","Programaci\u00f3n Inform\u00e1tica"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/","url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/","name":"POO EN C++ - Vista Previa","isPartOf":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#website"},"primaryImageOfPage":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#primaryimage"},"image":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#primaryimage"},"thumbnailUrl":"","datePublished":"2022-08-28T11:11:28+00:00","description":"El lenguaje C++ sigue siendo uno de los m\u00e1s utilizados para crear todotipo de aplicaciones. Aunque en laactualidad otras alternativas, comoJava o C#, han alcanzado granpopularidad, C++ sigue siendo ellenguaje elegido cuando se deseancrear aplicaciones r\u00e1pidas y robustas.C++ marc\u00f3 en su momento un puntode inflexi\u00f3n en la programaci\u00f3n conla orientaci\u00f3n a objetos y siguesiendo una referencia indiscutible eneste campo.\u00a0","breadcrumb":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#primaryimage","url":"","contentUrl":""},{"@type":"BreadcrumbList","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/2022\/08\/28\/poo-en-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/"},{"@type":"ListItem","position":2,"name":"Programaci\u00f3n orientada a objetos con C++"}]},{"@type":"WebSite","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#website","url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/","name":"Vista Previa","description":"TEMAS WORDPRESS","publisher":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#organization","name":"Vista Previa","url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#\/schema\/logo\/image\/","url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-content\/uploads\/2021\/10\/cropped-nicolas-N-tramp.png","contentUrl":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-content\/uploads\/2021\/10\/cropped-nicolas-N-tramp.png","width":512,"height":512,"caption":"Vista Previa"},"image":{"@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/#\/schema\/person\/25f4a9fc1df1ccf47b26f0627129af16","name":"Nicol\u00e1s","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/48545c1514fac5b21237f4433c348f809cf3e3c7b57718d11af0b047c3a59094?s=96&d=mm&r=g","caption":"Nicol\u00e1s"},"url":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/blog\/author\/nicolas\/"}]}},"_links":{"self":[{"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/posts\/8238","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/comments?post=8238"}],"version-history":[{"count":0,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/posts\/8238\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/media?parent=8238"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/categories?post=8238"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/xn--nicols-tta.es\/wordpress\/multisite\/temas\/wp-json\/wp\/v2\/tags?post=8238"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}