Cita: Es decir ¿Se puede hacer un casting de int a const int pero es incorrecto hacerlo viceversa? eso es lo que entendi
Bueno, realmente te dije que se hacía un casting de int a const int y no sé si es muy correcta esa lectura.
Veo mejor limitarse a pensar que con la cláusula const en una función me aseguro de que el contenido del array que mando como parámetro no será modificado. Puede no parecer muy útil cuando tú estás diseñando tu función y ésta no es muy complicada. En ese caso tú sabes mejor que nadie lo que ha de hacer la función y cómo ha de hacerlo. Pero puede ser que le mandes el prototipo a otra persona para que lo desarrolle, o tú mismo en el futuro quieres cambiar ese contenido. Con la cláusula const ya sabes que el contenido del array será siempre no modificable.
Sobre la inversa, si el parámetro se pasa por referencia, como es un array, te saltará el error porque es un cambio de tipo no permitido.
Si se pasa el objeto o variable por valor, y puesto que la copia local no modifica al parámetro, sí se podría.
Código C++:
Ver originalvoid Leer (int num)
{
num++;
cout<<"A en la función: "<<num<<endl;
}
int main()
{
const int a=6;
Leer (a);
cout<<"A en main: "<<a<<endl;
return 0;
}
En este caso uso el parámetro para obtener un valor, cuya modificación dentro de la función no afecta al objeto o variable que uso como parámetro, luego es suficiente con que los dos sean del tipo int.
Sin embargo así:
Código C++:
Ver originalvoid Leer (int& num)
{
cout<<"A en la función: "<<num<<endl;
}
int main()
{
const int a=6;
Leer (a);
cout<<"A en main: "<<a<<endl;
return 0;
}
Puesto que lo que quiero pasar como parámetro es la propia variable, ésta ha de tener el mismo tipo, aunque no sea modificada.
Mira aquí que te enterarás seguro que mucho mejor que con mi explicación.
http://c.conclase.net/curso/index.ph...025#VARV_CONST