C/Visual C - Funcion miembro de clase

 
Vista:

Funcion miembro de clase

Publicado por Oliver Ramirez (339 intervenciones) el 21/04/2002 20:39:54
Si defino una funcion miembro dentro del cuerpo de la clase de la cual es miembro es obligatorio escribir el prototipo de funcion, o sea, declararla?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Funcion miembro de clase

Publicado por beosman (37 intervenciones) el 22/04/2002 10:56:38
Pues si. ¿por qué?¿Qué quieres hacer?

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Funcion miembro de clase

Publicado por Oliver Ramirez (339 intervenciones) el 23/04/2002 01:29:20
no se si estoy confundido pero estoy usando una funcion miembro de clase si escribir su prototipo. Quiero saber porque me funciona si en c++ los prototipos son obligatorios?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Otra pregunta beosman

Publicado por Oliver Ramirez (339 intervenciones) el 23/04/2002 01:30:26
Gracias por contestar.

no se si estoy confundido pero estoy usando una funcion miembro de clase si escribir su prototipo. Quiero saber porque me funciona si en c++ los prototipos son obligatorios?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta beosman

Publicado por chuidiang (677 intervenciones) el 23/04/2002 21:08:58
Si con función miembro de una clase te refieres a un método de la clase, el prototipo lo estás poniendo dentro de la class

class A
{
public:
void funcion (); // Esto es el prototipo
};

Si no es ese el caso, quizás el nombre de tu función coincida con el de la función de alguno de los #include <fichero.h> que estés usando y el prototipo estará en dicho include.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta chuidiang

Publicado por Oliver Ramirez (339 intervenciones) el 23/04/2002 23:39:22
en la siguiente clase:

class Cnumero
{
public:
int sumarNumero(int a,int b){return a+b;}
private:
.
.
.
};

esta funcion me funcion miembro, entiendase metodo, me funciona si el protoripo, por que?

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta chuidiang

Publicado por Juse (4 intervenciones) el 24/04/2002 04:13:54
Esto debe funcionar.

Al compilar el compilador de VC++ intenta registrar todos los prototipos (nombre, parametros,...) y sus métodos (el código para entendernos).

Si definimos el método en la definicion de la clase, el compilador hace lo siguiente:
1) Anotar todos los prototipos de la clase
2) Anotar los métodos para cada prototipo:
2.1.) El método se encuentra en la definición de la clase, anotar
2.2.) El método se encuentra en el archivo de implementación (*.cpp), anotar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta chuidiang

Publicado por Oscar (114 intervenciones) el 24/04/2002 06:05:05
En la declaracion de una funcion lo que haces es darle a conocer el nombre de ella al compilador para que cuando encuentre un llamado a esa funcion inserte un simbolo que despues durante el linkeo lo va a transformar en la direccion donde va a estar alojada la funcion.
En el caso de este tipo de metodos, son los que se llaman inline, lo que hace el compilador es por cada llamado que encuentra a este metodo lo reemplaza por todo el codigo que escribiste entre llaves o sea que funcionaria como una macro que declaras con #define en C.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta Juse

Publicado por Oliver Ramirez (339 intervenciones) el 24/04/2002 23:02:06
Lo que me quieres decir Juse es que las funciones inline no requieren que se escriba su prototipo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta Juse

Publicado por chuidiang (677 intervenciones) el 28/04/2002 17:08:40
El prototipo viene a ser eso que has declarado. Cualquier código que necesite llamar a esa función, debe incluir el .h donde esté esa class. Cosa que no ocurre con una función normal. Sólo se incluye el prototipo y no el código.
De todas formas, aunque tenga "apariencia" de función, en realidad es una macro. No hace falta prototipo, sino la definición de la macro.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra pregunta chuidiang

Publicado por chuidiang (677 intervenciones) el 28/04/2002 17:03:58
Eso que tienes ahi declarado es una función "inline" (el código dentro de la misma declaración de la clase). Eso quiere decir que en realidad no es una función propiamente dicha, sino más bien como una macro. Es decir, en cada sitio que llames a la función, en realidad el compilador reemplaza la llamada por el código, sin hacer llamadas a funciones.
Este tipo de cosas están bien para ganar en rápidez de ejecución y con funciones pequeñas. Si no, el tamaño del ejecutable crecería mucho.

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar