What is the difference between
const string& getName() const {return name;}
and
string& getName() const {return name;}
What does const mean at the beginning and at the end?
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
The
constat the end of the function signature means the method is a const member function, so both your methods are const member functions.The
constat the beginning means whatever is being returned is const.The first example is a const method returning a const reference to internal data, and is therefore const-correct.
The second is a const method returning non-const reference to internal data. This is not const-correct because it means you would be able to modify the data of a const object.
A call to a const a method cannot change any of the instance’s data (with the exception of mutable data members) and can only call other const methods.
Const methods can be called on const or non-const instances, but non-const methods can only be called on non-const instances.