If in both cases the purpose is to not modify data, only retrieve data at a given point, why then is the first function not
double & Student::operator[](int i) const
What is it about returning a reference that doesn't require me to declare the member function as const? I feel like I'm missing something pretty obvious but this code is bugging the heck out of me not seeing why.