Da quello che sto leggendo in rete serve ad esempio se hai una funzione che prende come argomento un const, tipo:

void g(const int& i);

int main() {
int i = 3;
g(i);
cout << i;
}

e con la g vuoi passare la i ad una funzione f:

void g (const int& i) {
f(&i);
}

il compilatore ti da errore perche' si preoccupa che la f possa cambiarti la variabile

void f(int& i) {
i = 4;
}

Se al posto di f(&i) invece usi:

f(const_cast<int&>(i));

si zittisce e te la modifica. Se nel main avevi dichiarato "i" come const comunque, nel campo di visibilita' del main la i rimane a 3.

Pero' mi rimane allora il dubbio: come faccio a svolgere questo esercizio da thinking in c++?

Create a const array of double and a volatile array of double. Index through each array and use const_cast to cast each element to non-const and non-volatile, respectively, and assign a value to each element.