The difference between a reference and a const reference is merely that you can modify the referenced value (or call non-const member functions on it) when you have a plain reference, but can only call const member functions on an object for which you have a const reference, and you cannot modify it if it is a built-in type.
for example..
class A
{
int buf[1000];
public: A& fun()
{
buf[0]++; return *this;
}
const A& fun2()
{
buf[0]++; return *this;
}
};