Вы можете привести void*
к другому указателю на обоих языках.Возможно, вы имели в виду неявно.
Это очень удобно в C, чтобы не быть явно об этом.В C ++ у нас есть шаблоны, поэтому для написания универсального кода не требуется void*
приведение и еще много чего.В Си нет выбора.Универсальный контейнер должен содержать void*
для объектов, и гораздо проще многократно сказать mydata* d = node;
, чем mydata* d = (mydata*)node;
.
Так что это в значительной степени, как вы сказали.В C-типе безопасность вообще не получала такого большого внимания, как в C ++, особенно когда дело дошло до void*
, потому что предполагалось, что это простой общий указатель на что-либо.В C ++ это не нужно, поэтому лучше указывайте это, когда вы имеете дело с этим.