LINUX.ORG.RU

История изменений

Исправление slew, (текущая версия) :

Не по указателю, а по ссылке. А если тащится туда, где её собираются освобождать, то move(unique_ptr). Семантика владения в плюсах вполне себе обложена достаточно простыми и интуитивными рекомендованными практиками

Практики плюсов, типа *ptr-ов, и прочее, вроде заведения объектов в контейнерах, это памперсы и прочие прокладки. Выглядит смешно, сильное мешает, и работает только если быстро и активно не двигаться, иначе все это разлетается с брызгами. На самом деле, использование указателей есть самый эффективный способ использования объектов и управления ими. Даже в гошку их притащили, потому что дюже удобно. Что касается проблем с ними, то нужно использовать тот же подход, что и в гошке: не заниматься извращениями вроде арифметики указателей, кастами совы к глобусу, и пилить в проекте свой аллокатор объектов. Не тот Alloc, что в stl-вских контейнерах, а глобальный на проект, типа своего специализированного GC, он будет специализированным и поэтому тормозов в системе не создаст. Многие крупные проекты на C++, возникшие до распространнения вон тех вон «простых и интуитивных рекомендованных практик», как раз такие аллокаторы в системе имеют, загляни, например, в Apache Traffic Server, посмотришь как там реализовано выделение объектов и их особождение. Дюже удобны указатели в ядре, а местами там иначе-то и нельзя. Иначе получится что-то тормознутое и неэффективное. Но да, сложно с ними.

Исходная версия slew, :

Не по указателю, а по ссылке. А если тащится туда, где её собираются освобождать, то move(unique_ptr). Семантика владения в плюсах вполне себе обложена достаточно простыми и интуитивными рекомендованными практиками

Практики плюсов, типа *ptr-ов, и прочее, вроде заведения объектов в контейнерах, это памперсы и прочие прокладки. Выглядит смешно, сильное мешает, и работает только если быстро и активно не двигаться, иначе все это разлетается с брызгами. На самом деле, использование указателей есть самый эффективный способ использования объектов и управления ими. Даже в гошку их притащили, потому что дюже удобно. Что касается проблем с ними, то нужно использовать тот же подход, что и в гошке: не заниматься извращениями вроде арифметики указателей, кастами совы к глобусу, и пилить в проекте свой аллокатор объектов. Не тот Alloc, что в stl-вских контейнерах, а глобальный на проект, типа своего специализированного GC, он будет специализированным и поэтому тормозов в системе не создаст. Многие крупные проекты на C++, возникшие до распространнения вон тех вон «простых и интуитивных рекомендованных практик», как раз такие аллокаторыры в системе имеют, загляни, например, в Apache Traffic Server, посмотришь как там реализовано выделение объектов и их особождение. Дюже удобны указатели в ядре, а местами там иначе-то и нельзя. Иначе получится что-то тормознутое и неэффективное. Но, да, сложно с ними.