std::string m_value;
public:
Anything(const std::string & value = "") { m_value = value; }
std::string & getValue() { return m_value; }
};
int main()
{
Anything anything;
anything.getValue() = "Hello!";
return 0;
}
Нет же в функции присваивания нигде
getValue() возвращает ссылку на поле, дальше это ссылка используется в мейне для присваивания значения полю у anything
получается если бы там была бы не строка, а какое-то число, то я бы не смог его присвоить? так как это уже было б r-value, а l-value ссылку нельзя инициализировать r-value?
почему? все равно удастся, int& это по-прежнему lvalue главное отдавать XXX&
Ну так если возвращается ссылка l-value. то как мы ей можем присвоить r-value? Или возвращается что-то иное?
> как мы ей можем присвоить r-value Без проблем :) Нет такого ограничения, что присваивать можно только lvalue
Обсуждают сегодня