reference and const reference returned from operator in C++ -
i not understand why need 2 versions of functions return reference - 1 const , other not. example in code:
const char& string::operator[](int index) const {     verify_index(index);     return data[index]; }  char& string::operator[](int index) {     verify_index(index);     return data[index]; } if had const, wouldn't able example str[i] = value. problem having non-const reference, can please give example?
thanks
if had nonconst overload, unable use [] synax on const strings.
void print_first(const std::string& word) {     std::cout << word[0]; //like } if have const overload, unable use [] syntax modify string:
void edit_first(std::string& word) {     word[0] = 'a'; } if made const overload returns mutable char, that's worse!
void edit_first(const std::string& word) {     word[0] = 'a'; //wait, thought word const? } it's frustration have add 2 overloads, 90% of code can shared (as did verify_index), or end being two-liners.
(there fourth combination of nonconst overload returns const char, that's harmless , useless so... yeah.)
Comments
Post a Comment