Только C. На крестах смарт-поинтеры уже давно стали стандартом, а использование классических палит либо дремучего деда, либо студента, которого обучают не C++, а "Си с ООПшкой".
К сожалению, везде сплошь и рядом используют простые указатели. Зайдите на гитхаб. Ибо тянуть всякие weak_ptr всем лень. Тут же и так понятно, что время жизни вот того объекта, который мы вот тут в конструкторе передаем, дольше текущего. Ну что плохого может случиться?
Ну костыльные проекты "для души" (коих на жыдхубе в большинстве) и делаются "на отвалите", т.к. если прям хорошо изучать особенности крестов и 11 стандарта (хотя уже давно как 17 во во всяких фреймворках с генераторами CMakeLists втыкается по дефолту), то тут можно тупо исчезнуть из реальности на год, так и не занявшись проектом.
А если всякие там ROS-проекты, то в таких штуках стиль кодинга вообще хрен пойми на что похож, ибо 90% расписываемого - математика, ну и отдаёт пайтоном с матлабом.
Хорошо это, плохо это - да хрен его знает. Если читать хабр, то там чуть ли не расстрел прописывают юзеру, если он не использует паттерны, злоупотребляет наследованием, не въезжает в плюсовые лямбды и вообще на зубок не знает stl и стандарты последних лет.
Проекты для души... Почитайте, что ли, код хрома. Указатель на указателе, указателем погоняет. Вполне индустриальный проект, с жёстким стилем и обязательным код-ревью.
Нет, на самом деле void* — это "бестиповый" указатель. Его можно привести у указателю на другой тип, например, или указатель другого типа можно привести к нему.
используя void* можно заставить компилятор читать и писать память по произвольному адресу, что иногда может быть источником совершенно невероятных ошибок и проблем которые сложно найти.
то там по этому адресу находится не известно и не важно.
например вы можете прочитать тыкву как машину, в результате получить машину с совершенно неожиданными характеристиками.
а если запишите машину в место отведённое под тыкву, то повредите данные случайных объектов которые находятся рядом с тыквой, так как у тыквы меньше "размер", при чем никаких ошибок в этот момент вы не увидите.
ошибки произойдут потом, при чем они могут произойти сильно потом и программа упадёт с совершенно невнятными ошибками, это один из самых мерзких и сложных в поиске багов.
например вы можете промахнуться в указателе на 1 и повредить участок памяти который отвечает за какое-то важное условие, например тормоза в лифте или знак в ограничителе скорости космического аппарата.
аварий из за этого было много тысяч и современные компиляторы ответ на эти аварии.
void - дыра, ибо в переводе "пустота".
void * - указатель на дыру.
Если бы было void **, то нарисовали б ещё одного крипи-вояка, который тычет в крипи-вояка, который тычет в дыру.
Нахуй эти ебаные указатели вообще нужны? Обходятся же шарп и джава как-то без этой поеботы. А в плюсах чтобы хелловорлд написать, нужно разбираться в указателях на указатели и их разыменовывании.
The 30 year old OOPer
Project has 412 folders. 13.571 classes and not a single If statement because If statements are unclean, literally unreadable spaghetti
D.R.Y. fundamentalist (except for the 500 near identical overload methods)
Begins each new project with PrimordialSpaceTimeFabnc (i
Отличный комментарий!