если даункаст не прошёл?
не перемещать владение, если даункаст не прошёл, очевидно
Вообще передавать владения лучше через мув а мув с разными типами указателей не пройдёт
Такой мув с даункастом просто самому писать надо.
Вообще откуда идея одновременно и мувать и даункастить?
Ну а как иначе передать владение на унаследованный класс, а не на базовый?
А зачем вот вопрос владение оно не зависит от того на какой тип указатель указывает
Например, чтобы все вызовы у нового владельца перестали быть виртуальными.
А зачем?
Для более быстрой работы, очевидно же. Нет косвенных вызовов через VMT, компилятор может их вообще заинлайнить и/или дополнительно оптимизировать.
Да это сказки что виртуальная функция называется быстрее чем не виртуальная
А ты городишь чушь на ходу придумывая всякую хрень это не нужно вообще было изначально никому А ты придумал ответ на вопрос и пытаешься подогнать к этому какие-то требования
Если человек захотел зачем-то сделать dynamic_cast, а не просто звать виртуальные функции, значит ему это зачем-то было нужно? Мое предположение вполне логично: зная о конкретном наследнике, с ним можно работать 1) быстрее 2) пользоваться функциями, которых нет у предка.
1) быстрее?) бенчи делали? Смотрели насколько быстрее? 2) пользоваться функциями, которых нет у предков - очень странно, тогда надо сразу работать с данным типом, а не хранить указатель на предка))
1) я знаю, что разница невелика, но она есть, и на больших количествах обрабатываемых объектов с короткими виртуальными функциями становится ощутимой. 2) с этим я польностью согласен.
Обсуждают сегодня