Mediummovervalue
Что такое rvalue-ссылка (T&&) и для чего она нужна?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
`T&&` — rvalue-ссылка, привязывается к временным объектам и результатам std::move. Главная цель — move-семантика: move-конструктор крадёт ресурсы вместо копирования.
std::string make() { return "hello"; }
std::string&& r = make(); // привязка к rvalue
class Buffer {
int* data_;
size_t n_;
public:
// Move-конструктор: крадём ресурсы, не копируем
Buffer(Buffer&& o) noexcept
: data_(o.data_), n_(o.n_) {
o.data_ = nullptr; o.n_ = 0; // оставляем other в валидном состоянии
}
};Важно: имя rvalue-ссылки внутри функции — это lvalue. Чтобы переместить ещё раз, нужен std::move.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.