Существует много вопросов, обсуждающих детали C и С++, касающиеся удаления указателя на константу, а именно: free() не принимает их и что delete и delete[] do и эта константа не препятствует объекту разрушение.
Я заинтересован в том, считаете ли вы, что это хорошая практика, а не то, что позволяют языки (C и С++).
Аргументы для удаления указателя на константу включают:
- Линус Торвальдс
kfree(), в отличие от Cfree(), принимает аргументvoid const*, потому что он считает, что освобождение памяти не влияет на то, на что указывает. -
free()был разработан до введения ключевого слова const. - Операторы удаления С++ позволяют удалять данные const.
Аргументы против него включают:
- Программисты не ожидают, что данные будут изменены (или удалены), когда они передадут ему указатель-константу.
- Многие считают, что указатель на константу подразумевает не получение права собственности на данные (но не то, что не-const будет подразумевать получение прав собственности).
- Это обычная практика, наблюдаемая в большинстве библиотек и существующем коде.
Просьба аргументировать свои ответы и, возможно, обратиться к властям. Мое намерение состоит не в том, чтобы начать опрос здесь.