Alguien sabe cuál es la diferencia entre estas tres funciones?
const A * function();
A* const function();
A const * function();
Gracias por adelantado!!
Cita de: lJvRl en 18 Abril 2013, 13:53 PMAlguien 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
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).
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
Cita de: Black Master 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
Todas compilan (al menos en C++). Y estamos hablando de declaraciones, no de operaciones ;)
Cita de: lJvRl en 18 Abril 2013, 13:53 PM
Alguien sabe cuál es la diferencia entre estas tres funciones?
Seguro que son declaraciones? por que parecen operaciones...
Cita de: Black Master en 18 Abril 2013, 15:50 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).
que cracks!!!
Muchas gracias a todos!
Cita de: 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).
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!!
Cita de: lJvRl en 18 Abril 2013, 17:13 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.
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?
Cierto, me he debido de confundir *_*
jeje
Pero gracias igualmente porque al principio no sabia ni por donde buscar!!
Cita de: 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!!
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.
cierto