Учитывая следующий код:
#include <iostream>
#include <string>
using namespace std;
class A
{
private:
string m_name;
string m_first;
public:
A(): m_first("string") {}
virtual void print() const {}
string& getName() const {return m_first;} // won't compile
const string& getLastName() const {return m_name;} // compile
};
int main()
{
A a;
return 0;
}
Компилятор представляет: «недопустимая инициализация ссылки типа 'std :: string &' из выражения введите 'const std :: string' "
Почему я не могу вернуть m_first из getName ()? Я думал, что константа в хвосте функции указывает, что функция не изменит "this" ... но я не пытаюсь это изменить, просто верну элемент данных.