FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Funciones que devuelven objetos
En un proyecto que estoy haciendo se me ocurrió una función que me devolviera un objeto pero me encuentro en una interrogante: Si devuelve un objeto...¿Quien lo crea? la función o quien llama a la función?
Mi Teoría: Se supone que todas las instancias de un objeto son simples punteros partimos de que en la funcion HazAlgo efectivamente unaTabla, al no crearse no reserva memoria para el objeto TDataset, esto lo hace la funcion GetTabla dentro de su codigo y devuelve el puntero a la memoria recientemente reservada (la funcion no la libera destruyendo el objeto que creo). Entonces asumo que unaTabla apunta al Objeto que cre{o la función, por lo que entonces, tendré que destruir directamente unaTabla para liberarla. Quedando así:
Segun mi teoria este último código debe ser completamente válido...pero no lo sé hasta probarlo.. Alguna sugerencia? A lo mejor no estoy descubriendo nada nuevo...
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#2
|
||||
|
||||
Está bien lo que haces. La función es la que crea el objeto y quien lo recibe se encarga de destruirlo.
// Saludos |
#3
|
||||
|
||||
Gracias Roman. Ya lo probe y si era asi como tu bien me confirmas.
Que feo es cuando deja uno algo y luego lo retoma...se te barren muchas cosas
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#4
|
||||
|
||||
Para estos temas soy muy quisquilloso, cambiaría el nombre de la función a "CreateTable", "CreateDataset", "AllocDataset", es decir, un nombre que al verlo en la función HazAlgo, identifique que AllocDataset crea internamente un Dataset y por tanto en HazAlgo tengo que destruirlo con free.
"GetDataset" a mí personalmente, no me indica si realmente se crea algo, o es un apuntador a un dataset existente. El hecho es que siempre se me olvida que tengo que destruirlo y acabo revisando el código fuente de "GetDataset" (perdiendo más tiempo). Con un nombre más apropiado, el código se hace más entendible. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
||||
|
||||
Cita:
// Saludos |
#6
|
||||
|
||||
Hola,
Pues yo, puñeteramente, pregunto, porque dudo: el identificador puede dejar claro que se creará un objeto, estamos de acuerdo, pero, ¿queda claro que dicho objeto habremos de liberarnos nosotros? ¿Habría alguna forma de dejar esto claro también -a lo mejor ya lo está y a mí no me lo parece- o acaso es algo que hay que dar por sabido? ¿Eh? ¿Eh? ¿Eh? |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Devuelven el dinero de Windows a usuario de Linux | Casimiro Notevi | La Taberna | 1 | 10-11-2006 00:06:33 |
Acerca de objetos 3d | MakinaX | Gráficos | 4 | 19-06-2006 18:56:03 |
Gestión de queries que devuelven resultado nulo | papulo | Conexión con bases de datos | 7 | 11-04-2006 18:08:48 |
Objetos | jfontane | Varios | 1 | 04-07-2003 15:39:04 |
Metodos que devuelven referencias a sí mismos | shaktale | OOP | 8 | 07-06-2003 03:04:12 |
|