Здравствуйте, LaptevVV, Вы писали:
LVV>Изучаю тут С++ для преподавания студентам. LVV>И столкнулся с одной проблемой: не могу найти простого вменяемого примера для объяснения семантики переноса.
Эстафетное владение указуемым объектом (std::auto_ptr). В одном месте создали, в другое отдали, в старом забыли.
Физический пример: тачка с песком.
Передача по значению — это сделать новую тачку и насыпать туда такой же песок, как в исходной. Будет вдвое больше песка.
Передача по ссылке — отдать свою тачку в аренду.
Перемещение — высыпать песок из одной тачки в другую. Старую тачку выкинуть не немедленно, а в наиболее подходящий момент.
Можешь предложить студентам творческое задание: как передавать внутрь функции или возвращать из функции тяжеловесный объект (скажем, рукодельный вектор), не прибегая ни к копированию, ни к подсчёту ссылок. (А то на shared_ptr любой дурак сделает).
Скажи, что это нужно, скажем, для библиотеки линейной алгебры.