Как можно реализовать неизменяемую строку в C ++?

0

Все мои попытки до сих пор потерпели неудачу. Как правило, когда я возвращаю копию внутреннего массива символов строки, эта копия должна быть выпущена, но я не знаю, как ее выпустить. Обертка ее в интеллектуальном указателе не потому что он деструктор вызван сразу после того, как я возвращаю его. Должен ли я реализовать что-то вроде сборщика мусора только для неизменяемой строки?

  • 7
    Показать код, который не работает
  • 0
    Как насчет использования const std::string ?
Показать ещё 4 комментария
Теги:
string
immutability

1 ответ

4
Лучший ответ

const std::string будет в порядке.

  • 0
    Хотя производительность копирования может быть улучшена в выделенном неизменяемом строковом классе. Кроме того, const std::string нельзя перемещать, в то время как выделенный класс может это поддерживать. Аналогичным образом вы можете играть в игры с подстроками, рискуя удержать какой-то огромный буфер из-за крошечной подстроки, которая все еще ссылается на нее.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню