Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: lJvRl en 18 Abril 2013, 13:53 pm



Título: Duda sobre progrmacion C++
Publicado por: lJvRl en 18 Abril 2013, 13:53 pm
Alguien sabe cuál es la diferencia entre estas tres funciones?
const A * function();
A* const  function();
A const * function();


Gracias por adelantado!!


Título: Re: Duda sobre progrmacion C++
Publicado por: rir3760 en 18 Abril 2013, 15:41 pm
Alguien sabe cuál es la diferencia entre estas tres funciones?
¿Es tu tarea?

De las tres declaraciones dos de ellas son iguales (en ellas el orden de los calificadores no afecta). Básicamente es un ejercicio para practicar con los tipos A) puntero a objeto constante y B) puntero constante a objeto.

Un saludo


Título: Re: Duda sobre progrmacion C++
Publicado por: amchacon en 18 Abril 2013, 15:42 pm
La primera es una funcion que devuelve un puntero a un objeto constante.

La segunda es una función que devuelve un puntero constante.

La tercera es una variedad sintáctica de la segunda (se te permite poner el * en el tipo o en el const).


Título: Re: Duda sobre progrmacion C++
Publicado por: BlackM4ster en 18 Abril 2013, 15:43 pm
A const * function(); <- Esto ni compila  :¬¬
const A * function();  <- A es una constante (no cambia el valor en todo el programa) que se multiplica con el resultado de funcion
A* const  function(); <- Lo mismo que la segunda


Título: Re: Duda sobre progrmacion C++
Publicado por: amchacon en 18 Abril 2013, 15:46 pm
A const * function(); <- Esto ni compila  :¬¬
const A * function();  <- A es una constante (no cambia el valor en todo el programa) que se multiplica con el resultado de funcion
A* const  function(); <- Lo mismo que la segunda
Todas compilan (al menos en C++). Y estamos hablando de declaraciones, no de operaciones ;)


Título: Re: Duda sobre progrmacion C++
Publicado por: BlackM4ster en 18 Abril 2013, 15:50 pm
Alguien sabe cuál es la diferencia entre estas tres funciones?

Seguro que son declaraciones? por que parecen operaciones...


Título: Re: Duda sobre progrmacion C++
Publicado por: amchacon en 18 Abril 2013, 15:52 pm
Seguro que son declaraciones? por que parecen operaciones...
Nada más por el punto y coma se ve que son declaraciones de prototipos.

Por otro lado no se puede usar const en una operación, en todo caso podrías hacer un cast (const int).


Título: Re: Duda sobre progrmacion C++
Publicado por: lJvRl en 18 Abril 2013, 16:54 pm
que cracks!!!

Muchas gracias a todos!



Título: Re: Duda sobre progrmacion C++
Publicado por: lJvRl en 18 Abril 2013, 17:13 pm
La primera es una funcion que devuelve un puntero a un objeto constante.

La segunda es una función que devuelve un puntero constante.

La tercera es una variedad sintáctica de la segunda (se te permite poner el * en el tipo o en el const).

Una pregunta:

la tercera es una variedad sintactica de la segunda o de la primera?

Es que he visto esta web: http://www.zator.com/Cpp/E4_2_1e.htm

Y me ha parecido esto.

Gracias!!


Título: Re: Duda sobre progrmacion C++
Publicado por: amchacon en 18 Abril 2013, 17:32 pm
Una pregunta:

la tercera es una variedad sintactica de la segunda o de la primera?

Es que he visto esta web: http://www.zator.com/Cpp/E4_2_1e.htm

Y me ha parecido esto.

Gracias!!
De las segunda.

Pero me refiero al orden que has puesto en el primer post.


Título: Re: Duda sobre progrmacion C++
Publicado por: lJvRl en 18 Abril 2013, 17:38 pm
Si, pero viendo la pagina esta que he puesto parece que sean iguales la primera y la tercera:

Lo que yo he puesto:

1) const A * function();
2) A* const  function();
3) A const * function();

Segun la pagina:

puntero a constante:

tipoX const * puntero ... ;  = 3) 
const tipoX * puntero ... ;  = 2)

puntero constante:

tipoX * const puntero ... ; = 1)

no?


Título: Re: Duda sobre progrmacion C++
Publicado por: amchacon en 18 Abril 2013, 17:43 pm
Cierto, me he debido de confundir *_*


Título: Re: Duda sobre progrmacion C++
Publicado por: lJvRl en 18 Abril 2013, 17:45 pm
jeje

Pero gracias igualmente porque al principio no sabia ni por donde buscar!!


Título: Re: Duda sobre progrmacion C++
Publicado por: NoLife en 18 Abril 2013, 20:16 pm
Alguien sabe cuál es la diferencia entre estas tres funciones?
const A * function();
A* const  function();
A const * function();


Gracias por adelantado!!

en realidad no parece muy entendible esto...

pero si son punteros, te explicare, solo dos estarian correctos si es asi:

1.const A* function; esto significa que tienes un puntero, con el cual puedes intercambiar su direccion con otro, pero no su valor.

2.A* const  function; y este seria todo lo contrario, puedes cambiar su valor pero no su direccion.

saludos.


Título: Re: Duda sobre progrmacion C++
Publicado por: BlackM4ster en 19 Abril 2013, 15:05 pm
cierto