Retroceder   Foros del Web > Temas generales de computación > Programación > C/C++

Respuesta
 
Herramientas Desplegado
Antiguo 18-jul-2007, 14:33   #1 (permalink)
ArrauKano está en el buen camino
 
Avatar de ArrauKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 649
Duda instanciando clases

Según leía acá:
http://www.mailxmail.com/curso/infor...capitulo18.htm

Este es un tuto para clases y objetos.

Código:
class contador
{
public:leer() {return 1;}
};
void main()
{
contador c;
contador *p=new(contador);
leer(); //error: función desconocida, no en ámbito
cout<<c.leer(); //correcto
cout<<p->leer(); //correcto
}

Pero no entiendo cual es la diferencia de instanciar una clase así:

Código:
contador c;
o así:
Código:
contador *p=new(contador);
Y lo otro, para acceder a los miembros, en el primer caso es con un punto . y en el segundo con flecha ->

Decía que tiene una sutil diferencia, cual?
ArrauKano está desconectado   Responder Citando
Antiguo 18-jul-2007, 14:48   #2 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Re: Duda instanciando clases

Creo que era así:

p->leer();
c.leer();

tienes dos objetos contador
Developer9 está desconectado   Responder Citando
Antiguo 18-jul-2007, 14:58   #3 (permalink)
ArrauKano está en el buen camino
 
Avatar de ArrauKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 649
Re: Duda instanciando clases

lo tengo claro... pero no entiendo cuales esa "sutil diferencia" que hay en las 2 formas.
ArrauKano está desconectado   Responder Citando
Antiguo 18-jul-2007, 15:00   #4 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Re: Duda instanciando clases

Ah ya, tu mismo ya lo tienes:

cout<<p->leer();

Ah la diferencia es que tienes una variable tipo contador "c" y un puntero tipo contador *p

Un puntero es una referencia a una dirección de memoria, en este caso la memoria es asignada dinámicamente y el puntero lo que tiene es la dirección de donde está el objeto. En el primer caso la memoria es asignada en direcciones seguidas
Developer9 está desconectado   Responder Citando
Antiguo 18-jul-2007, 15:03   #5 (permalink)
(Desactivado)
Developer9 Developer9
 
Avatar de Developer9
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.202
Enviar un mensaje por MSN a Developer9
Re: Duda instanciando clases

Tu ejemplo es un caso sencillin... por lo que no estás "utilizando" la sutil diferencia de trabajar con punteros
Developer9 está desconectado   Responder Citando
Antiguo 18-jul-2007, 19:01   #6 (permalink)
ArrauKano está en el buen camino
 
Avatar de ArrauKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 649
Re: Duda instanciando clases

Entonces no se podría ocupar la flecha -> con el instanciado en una variable, y el punto . en el instanciado con punteros?
ArrauKano está desconectado   Responder Citando
Antiguo 18-jul-2007, 21:50   #7 (permalink)
Instru está en el buen camino
 
Avatar de Instru
 
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.438
Re: Duda instanciando clases

Cita:
Iniciado por ArrauKano Ver Mensaje
Entonces no se podría ocupar la flecha -> con el instanciado en una variable, y el punto . en el instanciado con punteros?
La diferencia es que en

contador c;

El objeto se crea desde que comienza el procedimiento en donde esta la declaracion, y este puede ser al comenzar el programa o una funcion(donde lo tengas declarado) y pues el constructor se ejecuta justo cuando se crea el objeto.
Y para accesar a sus funciones miembro o a datos miembro publicos usas el punto.

En caso de

contador *p=new contador;

Tienes un puntero en el que tu elijes exactamente el momento en que se crea el objeto. Asi puedes tener un puntero y solo usas la memoria necesaria cuando realmente lo necesites, como si ahorraras memoria.
Para accesar a los miembor de un puntero a un objeto usas el operador de referencia(creo que asi se llama) que es el "->".

La diferencia entre el punto y el -> es que el punto es como directo y el -> es para punteros ya que el puntero contiene la direccion y no los datos directamente.

Saludos
__________________
Usa las putas faqs:
http://www.forosdelweb.com/showthread.php?t=264647
Instru está desconectado   Responder Citando
Antiguo 19-jul-2007, 00:50   #8 (permalink)
ArrauKano está en el buen camino
 
Avatar de ArrauKano
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago
Mensajes: 649
Re: Duda instanciando clases

ok, está claro entonces.
ArrauKano está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 16:48.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93