Alguien me ayuda con esta duda? Funciones & Punteros.

Iniciado por XorNet, 4 Octubre 2013, 06:54 AM

0 Miembros y 5 Visitantes están viendo este tema.

XorNet

xd Creo que no me supe explicar, cuando tenemos:
Código (cpp) [Seleccionar]

ZGetGame()->ZMyCharacter();


Porqué ZGetGame() Tiene paréntesis? Qué es lo que los hace tener? Sí es un objeto puntero de una clase bastaría con: ZGetGame->ZMyCharacter(); Y así el objeto llama a la función ZMyCharacter(), Pero porqué ZGetGame tiene paréntesis?

ivancea96

Eso es que ZGetGame() es una función que retorna un objeto. ZMyCharacter() es una función del objeto retornado.

XorNet

Cita de: ivancea96 en  5 Octubre 2013, 00:27 AM
Eso es que ZGetGame() es una función que retorna un objeto. ZMyCharacter() es una función del objeto retornado.

Heheheh al fin lo entendí. xP O sea que el código correcto al que coloqué anteriormente es este:
Código (cpp) [Seleccionar]

#include <iostream>
#include <cstdlib>

using namespace std;

class Prueba {
public:
   void saludo() { cout << "Saludo desde la funcion!!\n"; }
   Prueba() { }
};

Prueba* pPrueba() {
   Prueba ejemplo1;
   return &ejemplo1;
}

int main() {

   // ...

   pPrueba()->saludo();
   
   // ...
   Prueba* prueba2 = pPrueba();
   prueba2->saludo();

   system("pause>nul");

   return 0;
}


Al fin lo entiendo sé que no es la gran cosa pero me servirá. (:

rir3760

En esta función:
Código (cpp) [Seleccionar]
Prueba* pPrueba()
{
   Prueba ejemplo1;
   return &ejemplo1;
}

Estas retornando la dirección de una variable local, no es valido ya que todas las variables locales se destruyen al finalizar la función.

Para que compile sin problemas puedes calificar la variable "ejemplo1" con static, de esa forma la variable existe durante toda la duración del programa:
Código (cpp) [Seleccionar]
Prueba* pPrueba()
{
   static Prueba ejemplo1;
   return &ejemplo1;
}


Con todo el ejemplo solo tiene caso (sentido) para practicar el uso de funciones y sus valores de retorno.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language