Muchas gracias ;).<br>Solo creo que esto no me quedó totalmente claro. Si me equivoco por favor corríjanme:<br><br>En C++, aparte de ser bueno, siempre hay que crear los objetos y eliminarlos después de haberlos utilizados explícitamente ya que en C++ no existen clases administradas?
<br><br>Ultima duda: El Destructor sirve para ordenar la memoria utilizada por los objetos antes de que se eliminen pero, ¿Qué pasa si no utilizo el destructor? ¿Qué consecuencias tiene?<br><br><div><span class="gmail_quote">
El día 27/12/06, <b class="gmail_sendername">Steven Davidson</b> <<a href="mailto:steven@conclase.net">steven@conclase.net</a>> escribió:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hola David,<br><br>El pasado 2006-12-26 19:40:01, David Reza escribió:<br><br>DR><br><br>Antes de continuar, quiero agregar lo que ya se ha mencionado por varios socios en esta discusión. Partimos de la idea básica que estamos hablando de "C++ Administrada o Gestionada", en corto, MC++. Por lo tanto, quiero dejar bien claro que MC++ no es C++. Microsoft inventó una serie de extensiones a C++ resultando en MC++. Esto implica que los compiladores de C++ no tienen por qué entender MC++. Por lo que sé, sólo los productos de Microsoft pueden tratar código escrito en MC++; o sea, Visual Studio .NET. MC++ al igual que C# sólo sirven para crear programas basadas en el armazón (framework) .NET, el cual es otro invento de Microsoft.
<br><br>Creo que ya puedes contestar a tus mismas preguntas con lo que acabo de explicar, pero lo haré explícitamente para el beneficio de todos.<br><br>DR> Quisiera saber si alguien me podría decir cómo puedo utilizar las funciones
<br>DR> Console::Write, Console::Writeline, que supongo que son de alguna librería<br>DR> así como cout es de la librería de <iostream>.<br><br>No lo puedes hacer, porque Dev-C++ no entiende MC++ ni tampoco tiene una implementación de .NET, al menos que alguien lo haya hecho.
<br><br>DR> Y también preguntar por mis otras dudas ya expuestas:<br>DR> ¿Cómo hago una clase administrada? En Visual Studio es con _gc antes del<br>DR> nombre de la clase, en todos los compiladores es igual?<br>
<br>Dicho lo anterior, sólo <a href="http://VC.NET">VC.NET</a> entiende el modificador '__gc' y por tanto no forma parte del estándar de C++.<br><br>DR> ¿La clase administrada me sirve para que los objetos se eliminen solos
<br>DR> cuando ya no se necesiten? También sé que se crean en el CLR (Common<br>DR> Language Runtime) en vez de crearse en la pila y por tanto se tienen que<br>DR> crear objetos primero definiendo un puntero para poder almacenar la
<br>DR> dirección de memoria del objeto.<br><br>Exacto. '__gc' tiene que ver con el sistema automático de la "recogida de basura". Esto implica que el entorno se encarga de destruir aquellos objetos creados dinámicamente y por tanto, nuestro código no los destruye de forma explícita. Visto de otro modo, en C++, usamos 'new' y 'delete' para crear y liberar memoria para nuestros objetos y variables, mientras que en MC++, usamos 'gcnew' para crear memoria pero "gcdelete" es implícito y llevado acabo por el entorno de .NET.
<br><br>DR> ¿Cómo creo una clase no administrada? ¿Con _value antes del nombre de la<br>DR> clase? ¿Es igual para todos los compiladores?<br><br>Puedes usar '__nogc' para declarar algo que sea "C++ nativo". El modificador '__value' sirve para establecer que las variables a crear contendrán los valores. Bajo MC++, las variables de tipo "gc" no contienen la información directamente sino a través de un puntero mediante el montículo (heap) del entorno.
<br><br>DR> ¿Un puntero puede almacenar otro puntero? ¿En las clases administradas se<br><br>Sí, un puntero puede apuntar a otro puntero o dirección de memoria.<br><br>DR> supone que al crear un objeto se crea en tiempo de ejecución y en realidad
<br>DR> devuelve un puntero que almacenamos en otro puntero?<br><br>Bueno, quiero recalcar el término "puntero", ya que a veces lo usamos para decir "una variable de tipo puntero" y otras veces como sinónimo de "dirección de memoria". En tu pregunta, mezclas ambos usos de la palabra "puntero". Es cierto que declaramos una variable de tipo puntero el cual servirá para guardar la dirección de memoria dada al crear memoria dinámicamente para el objeto administrado o gestionado.
<br><br><br>Nuevamente quiero aclarar que todo esto es propio de Microsoft y Visual C++ .NET. Si estás aprendiendo C++, no uses el libro que tienes, ya que no conocerás C++, sino MC++ el cual es un invento de Microsoft para programar usando .NET. Usar MC++ es una limitación bastante grande, al menos que no te interese nada más que .NET.
<br><br><br>Espero haber aclarado las dudas.<br><br>Steven<br>_______________________________________________<br>Cconclase mailing list<br><a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br></blockquote></div><br><br clear="all"><br>-- <br> | = David Reza = |