Существует ли законное использование void*
в С++? Или это было введено, потому что C имел это?
Просто чтобы вспомнить мои мысли:
Ввод. Если мы хотим разрешить несколько типов ввода, мы можем перегружать функции и методы, в качестве альтернативы мы можем определить общий базовый класс или шаблон (спасибо за упоминание об этом в ответах). В обоих случаях код становится более описательным и менее подверженным ошибкам (при условии, что базовый класс реализован разумным образом).
Вывод. Я не могу представить себе ситуации, в которой я бы предпочел получить void*
, а не что-то, полученное из известного базового класса.
Просто, чтобы понять, что я имею в виду: я не спрашиваю, есть ли прецедент для void*
, но если есть случай, когда void*
является лучшим или только доступным выбором. На что отлично ответили несколько человек ниже.