Ver Mensaje Individual
  #30 (permalink)  
Antiguo 16/04/2015, 10:01
dmorill
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 9 años, 10 meses
Puntos: 1
Respuesta: ¿Para qué necesito un Constructor? (Sí, novato inside XD).

Hola amigo, me gusta ver como estas apasionado por el tema jeje

Cita:
Iniciado por BramSt Ver Mensaje
Hasta aquí bien, pero es que luego te entiendo que no se hace punto p(), sino punto p, por ser una excepción que yo creí que ocurría en el caso de ser punto p un constructor, esto es, una llamada a una función.

Pero si es un objeto, es que no pintan ahí nada los paréntesis, ¿no?:
No es una llamada a una función, si realmente quisiéramos (y pudiéramos) llamar al constructor de punto, sería accediendo a un objeto punto definido y luego usar el operador "." para acceder a sus métodos. Es decir si tenemos:

Código C++:
Ver original
  1. struct punto{
  2. int _x, _y;
  3. void mostrarPunto(){cout << _x << " " << _y << endl; }
  4. punto() : _x(0), _y(0) {}
  5. }

Y queremos usar la función mostrar punto primero debemos crear un objeto (estructura en este caso) del tipo punto. Y luego llamar la función de ese objeto.

Código C++:
Ver original
  1. punto p;
  2. p.mostrarPunto()

Así que si pudiéramos llamar al constructor debería ser algo así:
Código C++:
Ver original
  1. p.punto(0, 0)  // ESTO ESTA MAL, no se llama al constructor es solo un ejmplo

Por eso no es una llamada a una función (constructor).

Cita:
Iniciado por BramSt Ver Mensaje
Entiendo por otro lado que si cuando hay parámetros sí se ponen, es porque simplemente los utilizas a la vez que declaras el objeto, por pura sintaxis (o eso he sacado de la explicación de dmorill):
Si se usan pero no se esta llamando al constructor, el compilador le pasa dichos parámetros al constructor cuando lo declaras.
Cita:
Iniciado por BramSt Ver Mensaje
Quedamos en que no se está llamando a ninguna función en esa sentencia "punto p" ó "punto p(4,5)", ¿verdad? Es la declaración de un objeto del tipo clase que le corresponde.
Y no puede confundirse un punto p (4,5) con una llamada a función con dos parámetros que retorna un punto?
No lo pudiste decir de mejor manera jeje.

un plus jeje, respecto al orden que usa vangodp te comento, c++ diferencia o separa los métodos de los argumentos (variables), así que no importa realmente el orden, ahora bien yo prefiero definiros al principio jeje. Es más diferencia también de lo privado y público, un struct no es más que una clase pero con todo publico, ya cuando estés en ese tema lo entenderás mejor.

Saludos,